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

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

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

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

Range.CountLargeプロパティとは

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

[スポンサードリンク]

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

複数のセルを選択しておいてから、以下のExcelを実行してください。

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プロパティです。

最終更新日時:2022-10-17 05:35

[スポンサードリンク]

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

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

検索


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

.