• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
langQ
博客园    首页    新随笔    联系   管理    订阅  订阅
【VBA】最終行を取得する方法3選【CurrentRegion、End、Findを使う】

参考元:【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」を使うと最終行を簡単に取得することができます。

posted on 2024-10-02 01:05  嚯嚯go  阅读(117)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3