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