ワークシート全体の行数と列数

VBAでシート全体の行数や列数を取得したいことがあります。

コードでは以下のようにRows.CountとColumns.Countの1行でそれぞれ取得できます。

RowsとColumnsはWorksheetオブジェクトの子になります。

そのため、一番左のシートを対象としたい場合には、Rows.とColumns.の左にWorksheets(1).と加えて書いても同じ意味になります。

親のシートオブジェクトを省略した場合はアクティブシートが対象になります。

もちろんアクティブシートであることを明示して以下のように書いても構いません。

 

取得は事前に1回だけにする

ワークシートの行数と列数はOfficeのバージョンで決まっています。

Office2003までは行数は65536、列数は256、Office2007からは行数は1048576、列数は16384です。

この値は変わらないため、VBA処理の初期処理として1度だけ取得して変数に入れておき、あとはその全体行数と全体列数の変数を必要なときに使うようにすれば、少しではありますが処理速度の向上につながります。

行数の取得を1回で済むようにする

例えば、シートの一番下の行に到達したかどうかの判定などをしたい場合は以下のような感じのコードにします。

 

列数の取得を1回で済むようにする

終端行ではなく終端列かどうかの判定をしたい場合は、Rows.Countの個所とループカウンタを列単位にすると上と同じように終端列への到達の判定が可能です。