【初心者】誰でも分かるExcelマクロ【VBA】~最終行・列の取得~
Part4で変数の使用方法や変数への格納方法について触れてきましたが、
本パートでは主にセルの最終行・列の取得方法について解説致します。
セルの最終行・列の意味と書き方
まずは、何故セルの最終行・列を取得する必要があるのか?ですが、下記に箇条書きで示します。
- ①Excelシートは日々書き足し等で更新されていくので、変化に対応したマクロが必要なため
- ②今後、マクロによる処理の自動化時に、自身が必要としているセルに編集を施すため
上記の2点から、Excelマクロによる自動処理を行う上でセルの最終行・列の取得はとても重要です。
※最終といっても、最終行のみ(最終セルのみ)ではなく最終行まで(1~1048576行目まで)を認識させる方法です。
実際のコードとしましては、下記のようになります。
Cells(1,1).End(xlDown) ※.Endメソッドは「最終」の意味
意味としては、A1セルに対して、A列の1行目から最終行までを見てその最終行はどこか。となります。
また、Endメソッドの後ろの( )内には、下記に示すようなDirectionを書き込みます。
ここで、上記のようにA1セルを指定した場合、下記のようなコードでは動作しません。
Cells(1,1).End(xlUp)or(xlLeft)
つまりは、A1セルより上のセルや左のセルは存在しないため、何も取得できません。
ただし、xlDownやxlRightのみでは下記に示すように空白セルがある場合に最終行を取得できなくなってしまいます。
上記のように5行目に空白があるため最終行「10」を選択して欲しいのですが、「4」を取得してしまいます。
xlUpやxlLeftを使用する方法は下記に示します。
セルの最終行・列の取得方法
ここでは、Countメソッドを使った最終行・列数の取得方法について解説致します。
以下のコードを使用することによって、xlUpやxlLeftを利用した最終行・列の取得ができます。
Cells(Rows.Count ,1).End(xlUp)
上記のようにCells(行,列)の「行」部分にRows.Countを入れ込むことで使用できます。
※Rowは「行」の意味でRowsはその複数系となりますので「行全体」の意味になります。その「行全体」の何行目であるかを取得するため.Count(数)をつけて行数を取得します。
上記のコードを用いてマクロを使用した場合、問題なく「10」を取得できることが分かります。
また、同様に「列」の取得方法ですが、「行」の時と同じく下記のようなコードを使用します。
Cells(1 ,Columns.Count).End(xlToLeft)
Cells(行,列)の列側にColumns.Countを入れ込むことで使用できます。
※Columnが「列」の意味で、Columnsで「列全体」となります。
E列に空白があっても無事に「7」が選択されています。
今回は、最終行・列のコードの書き方や取得方法について解説しましたが、次回は変数を用いたこれらの具体的な活用方法について解説する予定です。
次回→【初心者】誰でも分かるExcelマクロ【VBA】~最終行・列の実際の使用方法~
前回のページはこちら⇩
前回→【初心者】誰でも分かるExcelマクロ【VBA】~変数の使い方~