【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
もっとスマートな方法がありそうですが、とりあえずメモメモ。