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