• 虹色ミツバチ
  • freoカスタマイズメモ、テンプレート・プラグイン配布/officeTIPS
検索プラグイン
虹色ミツバチ

> Entry >MOS>Microsoft Office Excel>マクロ/VBA> ExcelVBAで最終行の取得例

【MOS】【Microsoft Office Excel】【マクロ/VBA】ExcelVBAで最終行の取得例

A1セルから下方向へ歯抜けのないデータが入っているとします。
A1セルからデータの入っている最終行を求める時は、

Sub GetMaxRow()
'====================================================================================
' 最終行を求めるマクロ
'====================================================================================
ThisWorkbook.Activate
    Dim maxRow As Long
    maxRow = ActiveSheet.Range("A1").End(xlDown).Row

    MsgBox("このシートの最終行は" & maxRow & "です。")
End Sub

 で取得できます。

しかし、A1セルにデータが入っていない場合、また、A2セルにデータが入っていない場合、上記マクロを動かすと、ワークシートの最大列(Excel2010の場合は1048576)を取得してしまいます。

よって、A1セルにデータが入っていた場合、A2セルにデータが入っていた場合を判断し、条件分岐で振り分けた例が下記のとおりです。

Sub GetMaxRow()
'====================================================================================
' 最終行を求めるマクロ
'====================================================================================
ThisWorkbook.Activate
    Dim maxRow As Long

    If Len(ActiveSheet.Range("A1").Value) = 0 Then
        maxRow = 0
    ElseIf Len(ActiveSheet.Range("A2").Value) = 0 Then
        maxRow = 1
    Else
        maxRow = ActiveSheet.Range("A1").End(xlDown).Row
    End If

    MsgBox("このシートの最終行は" & maxRow & "です。")
End Sub

もっとスマートな方法がありそうですが、とりあえずメモメモ。

ページ移動

関連記事

ユーティリティ

Twitter

ページ上部へ