【VBA】Endプロパティ
VBAのEndプロパティを大雑把に説明すると「領域の境界セルを取得するプロパティ」です。実際にマクロを動かして機能を実感してみましょう。
Endプロパティに「xlUp」を渡すと、下から上方向に領域の境界セルを探します。最初に次のような領域を作成しておきます。
以下のマクロを実行してみてください。変化を目で追えるように、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 が選択されます。
つまり、下図の灰色部分が順に選択されていきます。
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
シートの終端セルに対してEnd(xlUp)を使うと、データが入力されている最終行のセルを選択できます。
'[VBA] 最終行のセルを選択するプロシージャ Sub Data_End_Select() Dim r As Long 'シートの行数をカウント r = ActiveSheet.Rows.Count 'データが入力されている最終行のセルを選択 Cells(r, 4).End(xlUp).Select End Sub
コメント