Excel VBAで最終行・最終列を取得する:xlDown, xlToRight

Excel で入力されているデータの最終行や最終列を取得したい場合は、「Ctrl + →」あるいは「Ctrl + ↓」のように入力します。VBA では同じ動作を End プロパティを使うことで行うことができます。

End プロパティの使い方

End プロパティの構文は以下の通りです。

Rangeオブジェクト.End(方向)

End プロパティは指定した方向にあるセルの Range オブジェクトを返します。引数の方向には以下の表の値を指定します。

方向説明
xlUp上端の行:Ctrl + ↑
xlToLeft左端の列:Ctrl + ←
xlToRight右端の列:Ctrl + →
xlDown下端の行:Ctrl + ↓

表にある通り最終行、最終列だけでなく、上端と左端のセルを取得することもできます。

今回は以下の Excel データに対する例を見ていきます。

vba_end1

最終行を取得する 

以下は A1 から最終行を取得し選択する例です。

Range("A1").End(xlDown).Select

この場合、A1 を選択した状態から Ctrl + ↓ を入力した場合と同じ結果になります。

 vba_end3

最終列を取得する

以下は A1 から最終列を取得し選択する例です。

Range("A1").End(xlToRight).Select

この場合、A1 を選択した状態から Ctrl + → を入力した場合と同じ結果になります。

 vba_end2

間に空白のセルがある場合 

以下のデータのように空白がある場合を見てみましょう。

vba_end4

以下はこのデータの最終行を選択する例です。

Range("A1").End(xlDown).Select

空白のセルがある場合も同様に Ctrl と矢印キーを押したときと同じ動作となり、空白の上あるいは空白の左までのセルが返されます。

vba_end5