当サイトではアフィリエイトプログラムを利用して商品を紹介しています。

【VBA】Endプロパティでデータの最終行を選択する

【VBA】Endプロパティ

VBAEndプロパティを大雑把に説明すると「領域の境界セルを取得するプロパティ」です。実際にマクロを動かして機能を実感してみましょう。
 
Endプロパティに「xlUp」を渡すと、下から上方向に領域の境界セルを探します。最初に次のような領域を作成しておきます。
 
VBA Endプロパティ 領域を準備

以下のマクロを実行してみてください。変化を目で追えるように、Application.Wait で処理速度を調整してあります。

'[VBA] Endプロパティの挙動をテストするプロシージャ

Sub Shift_Up()

  Dim i As Long

  Range("D8").Select

  '処理を1秒待つ
  Application.Wait (Now + TimeValue("0:00:01"))

  '選択されているセルにEndプロパティを繰り返し適用する
  For i = 1 To 3
    Selection.End(xlUp).Select
    Application.Wait (Now + TimeValue("0:00:01"))
  Next i

End Sub

このマクロの処理を追うと…
 
① セル D8 が選択されます。
② 上方向に最も近い領域の境界セル D5 へ移動します。
③ 領域内の上端にあるセル D3 へ移動します。
④ シートの上端にあるセル D1 が選択されます。
 
つまり、下図の灰色部分が順に選択されていきます。
 
VBA 下から上に順次領域の境界を探索

Endプロパティの引数には「xlUp」以外にも、「xlDown」、「xlToLeft」、「xlToRight」があって、それぞれ下、左、右方向へ境界セルを探索します。Sub Shift_Up()マクロのにEndの引数を色々と変えて試してみてください。

データが入力された最終行のセルを選択する

End(xlUp)を利用して、データが入力された最終行のセルを選択してみましょう。少し工夫が必要なので、順を追ってマクロを組み立てます。

ワークシートの行数は Rows.Count プロパティで取得できます。

Sub Rows_Count()
  Debug.Print ActiveSheet.Rows.Count
End Sub

'1048576

ただし、Excelのバージョンによって行数は異なります。「1048576」は「Excel 2013」で実行して得られた結果ですが、バージョンによらず、

Cells(ActiveSheet.Rows.Count, 4).Select

によって、D列における行方向の終端セルを選択できます。

'[VBA] D列の行方向の終端セルを選択するプロシージャ

Sub Sheet_End_Select()

  Dim r As Long

  'シートの行数をカウント
  r = ActiveSheet.Rows.Count

  'D列の行方向の終端セルを選択
  Cells(r, 4).Select

End Sub

VBA シートの最終行 (末端セル)
 
シートの終端セルに対してEnd(xlUp)を使うと、データが入力されている最終行のセルを選択できます。

'[VBA] 最終行のセルを選択するプロシージャ

Sub Data_End_Select()

  Dim r As Long

  'シートの行数をカウント
  r = ActiveSheet.Rows.Count

  'データが入力されている最終行のセルを選択
  Cells(r, 4).End(xlUp).Select

End Sub

VBA データの入力された終端セル

コメント

タイトルとURLをコピーしました