Excel VBA 最終行・最終列を取得(Endプロパティ)

Excel VBAで最終行・最終列を取得

Excel VBA でシートに書かれている表の、最終行、最終列を取得します。

最終行、最終列を取得する方法はいくつかあります。

今回はキー操作とVBAを比べながらEndプロパティで取得する方法を説明します。

連続したデータの最終行を取得する

連続したデータ場合、「Ctrl + ↓」キーで最終行を取得することができます。

B3セルにカーソルを置き、「Ctrl + ↓」キーを押下します。

カーソルがB7セルに移動します。

この操作を「マクロの記録」で記録すると、以下のコードが記述されます。

Sub Macro1()

‘ Macro1 Macro

    Selection.End(xlDown).Select
End Sub

「Selection」は最初に選択したB3セルのことで、ここから連続したデータの最終行が「Selection.End(xlDown)」です。

「Select」は選択という意味なので、実際にカーソルが最終行B7セルに移動しています。

最終行に移動したB7セルの行番号が知りたいので、以下のように、Row関数を使用します。

Sub Macro1a()

    Range(“B3”).End(xlDown).Select

    MsgBox Selection.Row & “行目”
End Sub

実行すると、7行目と表示されます。

このようにEnd(xlDown).Selectを使うことで、「Ctrl + ↓」キーを押したときと同じように最終行を選択することができます。

選択後、Row関数で行番号を取得します。

連続したデータの最終列を取得する

連続したデータ場合、「Ctrl + →」キーで最終列を取得することができます。

B3セルにカーソルを置き、「Ctrl +→」キーを押下します。

カーソルがE3セルに移動します。

この操作を「マクロの記録」で記録すると、以下のコードが記述されます。

Sub Macro2()

‘ Macro2 Macro

    Selection.End(xlToRight).Select
End Sub

「Selection」は最初に選択したB3セルのことで、ここから連続したデータの最終列が「Selection.End(xlToRight)」です。

最終列に移動したE3セルの列番号が知りたいので、以下のように、Column関数を使用します。

Sub Macro2a()

    Range(“B3”).End(xlToRight).Select

    MsgBox Selection.Column & “列目”
End Sub

実行すると、5列目と表示されます。

このようにEnd(xlToRight).Selectを使うことで、「Ctrl + →」キーを押したときと同じように最終列を選択することができます。

選択後、Column関数で行番号を取得します。

連続していないデータの最終行を取得する

連続していない、途中で空白セルがあるデータ場合、Excelシートの最終行を選択し、「Ctrl + ↑」キーでデータの最終行を取得することができます。

Excelの最終行のセルにカーソルを置き、「Ctrl +↑」キーを押下します。

※Excelのバージョンによって、最終行は異なります。

カーソルがE3セルに移動します。

この操作を「マクロの記録」で記録すると、以下のコードが記述されます。

Sub Macro3()

‘ Macro3 Macro

    Selection.End(xlUp).Select
End Sub

「Selection」は最初に選択した最終行のセルのことで、ここから上に向かって値が設定されている最初のセル(=最終行)が「Selection.End(xlUp)」で、D7セルになります。

最終行に移動したD7セルの行番号が知りたいので、以下のように、Row関数を使用します。

Sub Macro3a()

    Cells(Rows.Count, 4).End(xlUp).Select

    MsgBox Selection.Row & “行目”
End Sub

実行すると、7行目と表示されます。

Rows.Countはシートの行数です。

Cells関数は、Cells(行, 列)でセルを指定できるので、Cells(Rows.Count, 4)がD列のデータの最終行のセルになります。

最終セルにEnd(xlUp).Selectを使うことで、「Ctrl + ↑」キーを押したときと同じようにデータの最終行のセルになります。

選択後、Row関数で行番号を取得します。

連続していないデータの最終列を取得する

連続していない、途中で空白セルがあるデータ場合、Excelシートの最終列を選択し、「Ctrl + ←」キーでデータの最終行を取得することができます。

Excelの6行の最終列のセルにカーソルを置き、「Ctrl +←」キーを押下します。

カーソルがE6セルに移動します。

この操作を「マクロの記録」で記録すると、以下のコードが記述されます。

Sub Macro4()

‘ Macro4 Macro


    Selection.End(xlToLeft).Select
End Sub

「Selection」は最初に選択した最終列のセルのことで、ここから左に向かって値が設定されている最初のセル(=最終列)が「Selection.End(xlToLeft)」で、E6セルになります。

最終列に移動したE6セルの列番号が知りたいので、以下のように、Column関数を使用します。

Sub Macro4a()

    Cells(6, Columns.Count).End(xlToLeft).Select
    MsgBox Selection.Column & “行目”
End Sub

実行すると、5列目と表示されます。

Columns.Countはシートの列数です。

Cells関数は、Cells(行, 列)でセルを指定できるので、Cells(6, Columns.Count)が6行目のデータの最終列のセルになります。

最終セルにEnd(xlToLeft).Selectを使うことで、「Ctrl + ←」キーを押したときと同じようにデータの最終列を選択することができます。

選択後、Column関数で列番号を取得します。

 

まとめ

Excel VBA でシートに書かれている表の、最終行、最終列の取得について、キー操作とVBAを比べながらEndプロパティで取得する方法を説明しました。

以上、ExcelVBAで最終行・最終列を取得するプログラムでした。