VBA~指定した列の最終行を選択しよう~Excel
構文
expression.End (方向)
expression は Range オブジェクトを表す変数です。RangeやCellsで基準となるセルを指定します。
方向は下の表に対応していいます。
名前 | 説明 |
---|---|
xlDown | 下へ |
xlToLeft | 左へ |
xlToRight | 右へ |
xlUp | 上へ |
簡単な例
範囲の最終行を選択するときはRange.Endプロパティを使います。
空白がない時
空白がない時に指定した列の範囲の最終行を選択したい場合はRange.Endプロパティで範囲の一番上のセルを指定し方向は下方向を指定します。
上の画像においてA列の範囲の最終行を選択したい場合は次のコードを実行します。範囲の一番上のセルA1を指定して、方向は下方向を表すxlDownを指定しています。
Sub test1() Range("A1").End(xlDown).Select End Sub
空白があるとき
XlDownを範囲の途中に空白があるときに使うと空白の上のセルが選択され、範囲の最終行は選択されません。そんなときは列の最終行を指定し、方向は上方向を指定すると範囲の最終行を選択できます。列の最終行はRows.Countで取得できます。エクセル2007以降では最終行は1048576行なので1048576を取得します。A列の最終行を指定したい時はCells(Rows.Count, 1)で指定できます。
上の画像においてA列の範囲の最終行を選択したい場合は次のコードを実行します。A列の一番下の行を指定して、方向は上方向を表すxlUpを指定しています。 1)で指定できます。
Sub test2() Cells(Rows.Count, 1).End(xlUp).Select End Sub
この方法は空白がない時でも同じように、最終行を選択できるので統一するのも良いです。
最終行の下の行にデータを入力する
最終行の下の行にデータを入力したい時は先ほどCells(Rows.Count, 1).End(xlUp).Selectで最終行を選択した方法を少し変えてSelectをRowに変えると最終行の行番号が取得できます。次の行の行番号はそのプラス1なのでCells(Rows.Count, 1).End(xlUp).Row + 1になります。RangeオブジェクトのCellsはCells(行番号、列番号)でセルを指定するので行番号にこれを指定します。下に例を示します。
上の画像においてA列の最終行の次の行に2を入力したい場合は次のコードを実行します。
Sub test3() Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1) = 2 End Sub
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