終端セルを参照する(Endプロパティ)|Excel VBA |
対象セル範囲の領域における終端のRangeオブジェクトへの参照を返します。
言い換えれば、キーボードでの[Ctrl] + [方向キー] (←、→、↑、↓ のいずれか)の操作で移動する先のセルへの参照です。
どの方向に移動するかは引数Directionで指定します。
構文 Object.End(Direction) 取得のみ
設定項目 | 内容 |
---|---|
Obiect | Rangeオブジェクト |
・引数Directionで指定する定数(xlDirection列挙体のメンバ)
定数 | 値 | 内容 | キーボード操作 |
---|---|---|---|
xlUp | -4162 | 上方向への移動 | [Ctrl] + [↑] |
xlDown | -4121 | 下方向への移動 | [Ctrl] + [↓] |
xlToLeft | -4159 | 左方向への移動 | [Ctrl] + [←] |
xlToRight | -4161 | 右方法への移動 | [Ctrl] + [→] |
サンプル1は、セルA1から隙間無くデータの入力されたリストについて、A列の最終行のセルを選択します。
Sub Sample1()
'----セルA1から下方向の終端セルを選択
Range("A1").End(xlDown).Select
End Sub
サンプル1では、セルA1から下方向の終端セルを取得することで、最終行のデータを特定することができますが、次のようなデータでは問題が発生します。
(1)項目名だけでデータが無い
(2)最終行のデータまでの間に空白行がある
(1)の場合は、ワークシートの最終行のセルを参照してしまうため、「最終行+1行」(存在しないセル)に新規データを追加するときにエラーが発生します。
(2)の場合は、最終行ではないセルを参照してしまうため、新規データ追加時に既存データを上書きしてしまいます。
サンプル2では、A列の最終行のセルから上方向にデータの終端セルを取得します。
この方法だと上記の(1)や(2)の場合も最終行のセルを選択できるので、より汎用性が高いでしょう。
Sub Sample2()
'----A列の最終行から上方向の終端セルを選択
Cells(Rows.Count, 1).End(xlUp).Select
End Sub
1行目の右端セルを選択する場合は、下記のように一番右のセルから左方向に終端セルを取得すれば良いでしょう。
Cells(1, Columns.Count).End(xlToLeft).Select