Excel VBA データがある最終行を知る方法

  1. Endプロパティ
  2. Endメソッド

Endプロパティ

今回の図書データのレコードが何件あるかわかりません。そこで、先頭行はわかっていますので、最後の行がわかればレコード件数がわかります。

そこでワークシートの最終行を知るにはどうすればいいでしょうか。ある列を最初から読んでカウントする方法もありますが、もっと簡単にわかるプロパティがあります。これは便利で応用範囲が広いので習得しましょう。

サンプルデータbooks-list.xlsx「図書目録」を開きます。


Endプロパティを利用して最終行を知る方法

Ctrl + G キーを押してイミディエイトウィンドウに移って、上のメッセージ文を入力してみてください。データがある最終行が表示されると思います。

この「Range("A3").End(xlDown).Row」の意味するところは、セルA3から下のセルへ順に移動して(xlDown)、そのセルの内容が有から無に変化したときの直前の行番号(row)を、無から有に変化したときは、その行番号(row)を求めるものです。


【練習問題5】

では、古典的な(?)レコード件数の求め方をWhile文を使って求めてみましょう。対象データはサンプルデータvba-exercises.xlsm「VBA練習問題」のシート名「Sheet1」にあるデータを利用します。

この作業をする前に、サンプルデータvba-exercises.xlsm「VBA練習問題」をダウンロードし、保存しておいてください。


【解答例】


Endメソッド

練習問題5ができたら、練習問題6に挑戦してみましょう。

【練習問題6】

今度はEndメソッドを使って、サンプルデータbooks-list.xlsx「図書目録」を開いて、シート名「図書」のレコード件数を求めてみましょう。MsgBox関数を使って結果を表示します。


【解答例】


【参考】

ワークシートの最大行、最大列を取得するには以下のように記述します。

まず基本からですが、ワークシートの最大行、最大列を取得するコードです。もちろんこれ自体はデータの最終行、最終列を取得するものではありません。

「Rows」はワークシートの行全体をあらわすオブジェクトで、「Columns」は列全体をあらわすオブジェクトです。そのメソッド「Count」は数、すなわちそれぞれ行数、列数を表します。

返される値はEXCELのバージョンによって異なりますが、

EXCEL 97/2000/2003では、65,536行、256列になります。

また、Excel 2007/2010では、最大行数は16倍の1,048,576行、最大列数は64倍の16,384列で、セル数にして17,179,869,184(171億)、従来の1024倍という膨大な量になります。

ほとんど取り扱いに困らないセルの数だと思います。


【確認】

では、プログラミングする前に、イミディエイトウィンドウで確認しましょう。

Ctrl + G キーを押してイミディエイトウィンドウに移ります。

最大行を求めるには

と入力してEnter キーを押します。

また、最大行を求めるには

と入力してEnterキーを押します。

どうでしたか?期待したとおりの結果が表示されましたか。

確認が終わったら、F4 キーを押してコードモジュールに戻りましょう。