【Excel VBAで”最終行”の行数を取得する方法】

ExcelVBA

VBAで最終行を取得するには、Endプロパティを使用して、範囲内の最終行を取得する方法があります。Endプロパティに引数として、方向を指定することで、上下左右の最終行を取得できます。ここでは、Endプロパティに引数として、xlDownを利用する方法と、xlsUpを利用する方法について解説します。

xlDownを利用する方法

Range.Endプロパティに引数として、xlDownを指定することで、指定したセルから下方向に連続する空白でないセルのうち、最終行を取得することができます。以下に、VBAで最終行を取得するコードを示します。

Sub lastRowWithXlDown()
    '最終行を取得する変数lastRowを宣言
    Dim lastRow As Long

  'アクティブシートの1列目(A列)の最終行をlastRowに格納
    lastRow = ActiveSheet.Range("A1").End(xlDown).Row
    
    'メッセージボックスでlastRowの値を出力
    MsgBox "最終行は " & lastRow & " 行目です。"
End Sub

この例では、ActiveSheet.Range(“A1”).End(xlDown)で、A1セルから下方向に連続する空白でないセルのうち、最終行を取得しています。その行番号をMsgBoxで表示しています。

xlUpを利用する方法

Range.Endプロパティに引数として、xlUpを指定することで、指定したセルから上方向に連続する空白でないセルのうち、最終行を取得することができます。以下に、VBAで最終行を取得するコードを示します。

Sub lastRowWithXlUp()
    '最終行を取得する変数lastRowを宣言
    Dim lastRow As Long

    'アクティブシートの1列目(A列)の最終行をlastRowに格納
    lastRow = ActiveSheet.Range("A1048576").End(xlUp).Row
    'または、以下の書き方でもよい
  'lastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row

    'メッセージボックスでlastRowの値を出力
    MsgBox "最終行は " & lastRow & " 行目です。"
End Sub

この例では、ActiveSheet.Range(“A1048576”).End(xlUp)で、A列の最終行から上方向に連続する空白でないセルのうち、最終行を取得しています。その行番号をMsgBoxで表示しています。

注意点

最終行を取得する際に、データが存在しない場合には、意図した結果が得られないことがあります。そのため、最終行を取得する前に、データの存在をチェックすることが重要です。また、範囲内に空白セルが存在する場合にも、Endプロパティで取得した最終行が想定した行番号と異なる場合があります。