Endプロパティと列の最終行を選択するマクロ

Endプロパティ

 End プロパティ を大雑把に説明すると「領域の境界セルを取得するプロパティ」です。実際にマクロを動かして機能を実感してみましょう。

End(xlUp)

 End プロパティ の引数に xlUp を渡すと、下から上方向に領域の境界セルを探します。

 最初に次のような領域を作成しておきます。

 VBA Endプロパティ 領域を準備

 以下のマクロを実行してみてください。変化を目で追えるように、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 が選択されます。

 つまり、下図の灰色部分が順に選択されていきます。

 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 列における行方向の終端セルを選択できます。

Sub Sheet_End_Select()

  Dim r As Long

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

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

End Sub

 VBA シートの最終行 (末端セル)

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

Sub Data_End_Select()

  Dim r As Long

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

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

End Sub

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

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください