Home » ExcelVBA Rangeオブジェクト » Range.CountLargeプロパティとは

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「countlarge 使い方」
という検索で、このサイト・インストラクターのネタ帳へアクセスがありました。

Excel VBA(Visual Basic for Applications)の、Range.CountLargeプロパティは、

Range.CountLargeプロパティとは

どう使うのか、何に使うものなのかを調べていた方による検索でしょう。

[スポンサードリンク]

Range.CountLargeプロパティを使うサンプルマクロ

複数のセルを選択しておいてから、以下のSubプロシージャを実行してみましょう。


Sub CountLargeの戻り値を確認する()
 MsgBox Selection.Cells.CountLarge
End Sub

選択していたセルの個数が、メッセージボックスに表示されたはずです。

つまり、RangeオブジェクトのCountLargeプロパティは、セルの数を返すということです。

セルの数はRange.Countで取得できるのでは

Excel VBAに慣れた方なら、
「セルの個数をカウントするのはRange.Countプロパティではないのか?」
と疑問に感じることでしょう。

もちろん以下のようなSubプロシージャでも、選択セルの数を取得できます。


Sub 選択されているセルの数を取得する()
 MsgBox Selection.Cells.Count
End Sub

Range.CountとRange.CountLargeの違い

Range.CountとRange.CountLargeは、どちらもセルの数を返すプロパティです。

何が違うかというと、以下のSubプロシージャを実行すると見えてきます。


Sub 全セル数を取得する_オーバーフロー()
 MsgBox Cells.Count
End Sub

「オーバーフローしました。」という実行時エラーが表示されます。

これに対して、以下のプロシージャを実行した場合には、


Sub 全セル数を取得する()
 MsgBox Cells.CountLarge
End Sub

「17179869184」と表示されます。

Cells.Countプロパティを使うと、本来はアクティブシートの全セルの数を取得できるはずなのですが、Excel 2007以降のワークシートサイズは1,048,576行×16,384列もあって、Long値返すRange.Countプロパティの上限を超えてしまいます。(そのためオーバーフローしたことを告げる実行時エラーが発生します)

これに対処するために用意されたプロパティがRange.CountLargeプロパティです。

2007以降のExcelで、大量のセルの数を取得する際に使うのが、Range.CountLargeプロパティです。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » Range.CountLargeプロパティとは

TrackBack:0

TrackBack URL

Home » ExcelVBA Rangeオブジェクト » Range.CountLargeプロパティとは

「ExcelVBA Rangeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.