【VBA】最終行を取得する方法3選【CurrentRegion、End、Findを使う】

嚯嚯go發表於2024-10-02

參考元:【VBA】最終行を取得する方法3選【CurrentRegion、End、Findを使う】
https://daitaideit.com/vba-get-lastrow/

最終行を取得する方法は、次の3つがあります。
 CurrentRegionを使う
 Endを使う
 Findを使う

1.CurrentRegionで最終行を取得する

Sub TEST1()
    
    '最終行を選択する
    With Range("A1").CurrentRegion
        .Rows(.Rows.Count).Select
    End With
    
End Sub

最終行の行番號を取得
最終行の行番號を取得したい場合は、「.Row」を最後につけると取得することができます。

Sub TEST2()
    
    '最終行の行番號を取得する
    With Range("A1").CurrentRegion
        Debug.Print .Rows(.Rows.Count).Row
    End With
    
End Sub

空白行が弱點
 
Endで最終行を取得する
Endを使って、最終行を取得するVBAコードは、こんな感じになります。

Sub TEST3()
    
    'Endで最終行を選択
    Cells(Rows.Count, "A").End(xlUp).Select
    
End Sub

行番號を取得

最終行の行番號を取得したい場合は、「.Row」を最後につけます。

Sub TEST4()
    
    'Endで最終行の行番號を取得
    Debug.Print Cells(Rows.Count, "A").End(xlUp).Row
    
End Sub

フィルタと非表示が弱點

CurrentRegionを使う
フィルタや非表示行がある場合は、CurrentRegionを使えます。
ただ、空白行がないのが條件です。

Sub TEST6()
    
    '最終行を選択する
    With Range("A1").CurrentRegion
        .Rows(.Rows.Count).Select
    End With
    
End Sub

実行結果:

すべて表示して最終行を取得
もう一つの対策としては、「すべての行を表示」して最終行を取得する方法があります。

こちらの方が確実ですね。
フィルタを解除して最終行を取得

Sub TEST7()


    
    'フィルタを解除する
    If ActiveSheet.FilterMode Then
        ActiveSheet.ShowAllData
    End If
    
    '最終行を選択する
    Cells(Rows.Count, "A").End(xlUp).Select
    
End Sub

すべての行を表示して最終行を取得

すべての行を表示して、最終行を取得するVBAコードになります。

Sub TEST8()
    
    'すべての行を表示する
    Rows.Hidden = False
    
    '最終行を選択する
    Cells(Rows.Count, "A").End(xlUp).Select
    
End Sub

 
 
Findで最終行を取得する

Findで最終行を取得するVBAコードになります。

Sub TEST9()
    
    'A~C列で最終行を選択する
    Range("A1:C1").EntireColumn.Find("*", , , , 1, 2).Select
    
End Sub

フィルタが弱點:ただ、Findの弱點は、「フィルタ」になります。
最終行がフィルタされている場合で、実行してみます。

フィルタを解除して、最終行を取得

Findを使う場合は、フィルタを解除して、最終行を取得するといいです。

Sub TEST11()
    
    'すべての行を表示する
    If ActiveSheet.FilterMode Then
        ActiveSheet.ShowAllData
    End If
    
    'A~E列で、最終行を選択する
    Range("A1:E1").EntireColumn.Find("*", , , , 1, 2).Select
    
End Sub

 
おわりに
この記事では、最終行を取得する方法について、ご紹介しました。

最終行を取得する方法は、次の3つがあります。
 CurrentRegionを使う
 Endを使う
 Findを使う
「CurrentRegion」の弱點は、「空白行」になります。
「End」の弱點は、「フィルタや非表示行」です。
まずは、場面に応じて、「CurrentRegion」もしくは「End」を使うといいです。
入力行數がバラバラで、空白列がある場合など、イレギュラーな場合には、「Find」を使うと最終行を簡単に取得することができます。

相關文章