ワークシートの最終行と最終列

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

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

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

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

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

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

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

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

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

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

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

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