OfficeType

VBA~指定した列の最終行を選択しよう~Excel

構文

expression.End (方向)

expression は Range オブジェクトを表す変数です。RangeやCellsで基準となるセルを指定します。

方向は下の表に対応していいます。

名前説明
xlDown下へ
xlToLeft左へ
xlToRight右へ
xlUp上へ

簡単な例

範囲の最終行を選択するときはRange.Endプロパティを使います。

空白がない時

空白がない時に指定した列の範囲の最終行を選択したい場合はRange.Endプロパティで範囲の一番上のセルを指定し方向は下方向を指定します。

image-01

上の画像においてA列の範囲の最終行を選択したい場合は次のコードを実行します。範囲の一番上のセルA1を指定して、方向は下方向を表すxlDownを指定しています。

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

image-02

空白があるとき

XlDownを範囲の途中に空白があるときに使うと空白の上のセルが選択され、範囲の最終行は選択されません。そんなときは列の最終行を指定し、方向は上方向を指定すると範囲の最終行を選択できます。列の最終行はRows.Countで取得できます。エクセル2007以降では最終行は1048576行なので1048576を取得します。A列の最終行を指定したい時はCells(Rows.Count, 1)で指定できます。

image-03

上の画像においてA列の範囲の最終行を選択したい場合は次のコードを実行します。A列の一番下の行を指定して、方向は上方向を表すxlUpを指定しています。 1)で指定できます。

Sub test2()
Cells(Rows.Count, 1).End(xlUp).Select
End Sub

image-04

この方法は空白がない時でも同じように、最終行を選択できるので統一するのも良いです。

最終行の下の行にデータを入力する

最終行の下の行にデータを入力したい時は先ほどCells(Rows.Count, 1).End(xlUp).Selectで最終行を選択した方法を少し変えてSelectをRowに変えると最終行の行番号が取得できます。次の行の行番号はそのプラス1なのでCells(Rows.Count, 1).End(xlUp).Row + 1になります。RangeオブジェクトのCellsはCells(行番号、列番号)でセルを指定するので行番号にこれを指定します。下に例を示します。

image-01

上の画像においてA列の最終行の次の行に2を入力したい場合は次のコードを実行します。

Sub test3()
Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1) = 2
End Sub

image-05

Cells(Rows.Count, 1).End(xlUp).Rowが長くて見ずらい時は変数にしましょう。 次のコードもMaxRowという変数にしただけで同じコードです。

Sub test4()
Dim MaxRow As Long
MaxRow = Cells(Rows.Count, 1).End(xlUp).Row

Cells(MaxRow + 1, 1) = 2
End Sub