Excel VBA 最終行取得のコード解説

Excelを使う業務では、表にまとめる、表からグラフを作るなど、まさしく表計算ソフトウェアとしての使い方があると思います。

色々な業務の中でもVBAで表を取り扱うときによく遭遇するのが、表の最終行を取得したいシチュエーションかと思います。

それで、インターネットで検索すれば、或いはチャットGPTなどに尋ねてみれば、以下の回答が出てくると思います。

Cells(Rows.Count,1).End(xlUp).Row

今回は、このコードの解説を行いたいと思います。
読者はVBA初級者を想定し、分かりやすい説明となるように頑張ってみます。

先ず、このコードはセルの行番号を返すものなので、プログラムの中では、変数名=Cells(Rows.Count,1).End(xlUp).Rowとすることが多いです。

Cellsの括弧の中の文言についてです。
Rows.Countは、シートの行をカウントした数を示しています。つまりは最終行の事なので、1,048,576を取得することになります。
Cellsは(行番号,列番号)という書式なので、Cells(Rows.Count,1)は1列目の最終行のセルという意味になります。

ここで、落とし穴ポイントだと思うのが、1列目を示している「,1」です。
ここをよく理解していないと、表の左端の位置によって、1ではなく別の数字にする必要性に気づけません。

End(xlUp)は、Cells(Rows.Count,1)から真上にセルをジャンプさせるということを意味しています。
正確には、EndモードのことやCellsプロパティのことなどを説明するのですが、余計分かりにくいことになると思うので、このような解釈でとりあえずは問題ないと思います。

さて、このような流れで、表の最終行を取得することが出来るのですが、ここでもう一つ、落とし穴ポイントがあリます。
それは、表の中に空白セルが含まれているケースです。このようなケースだと、最終行として取得した値と表中の本当の最終行の値に違いが生じてしまう可能性があります。正確には、そうなる場合とそうならない場合がありますが、細かい話は割愛します。
やはり、表はテーブル形式にしておいて、空白セルは無い状態にしておくと、VBAのコーディングが楽になると思います。

ここまで読んでいただきありがとうございます。
皆さんのお役に立てれば幸いです。

いいなと思ったら応援しよう!