このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】最終行を取得する2つの方法

2024年10月19日

今回はExcel VBAで最終行を取得する方法を紹介します。

最終行を取得する方法はたくさんあるのですが、その中で使い勝手の良い方法を紹介します。

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

特定の列の最終行を取得 End(xlUp)

Sub GetEndRow()
    
    Dim endRow As Long
    
    'A列の最終行を取得
    endRow = Cells(Rows.Count, 1).End(xlUp).Row
End Sub

最終行の取得で最もポピュラーなのはこの方法です。

End(xlUp)はExcel上で「Ctrl+↑」を押したときと同じ役割を果たします。

特定の列の最終行を取得 End(xlUp)

一番下のセルCells(Rows.Count, 1)から上に向かって移動して、入力済の最終行を探すといったイメージになります。

コード説明

Rows.Countは最大行数(現在のExcelだと1048576)です。そのためCells(Rows.Count, 1)はA列の一番下のセルとなります。

そこからCells(Rows.Count, 1).End(xlUp)で上に向かって移動して、入力済のセルへ移動します。

そしてRowプロパティによって入力済のセルの行数を得ています。

ちなみにサンプルコードではCells(Rows.Count, 1)としてA列の最終行を調べていますが、Cells(Rows.Count, 2)などと数値を変えればB列やC列の最終行を調べられます。

シート全体から最終行を取得 UsedRange

Sub GetEndRow2()
    
    Dim endRow As Long, ws As Worksheet
    Set ws = ActiveSheet
    
    'シート全体から最終行を取得
    endRow = ws.UsedRange.Rows(ws.UsedRange.Rows.Count).Row
End Sub

シート全体から入力済の最終行を探したい場合はUsedRangeプロパティを使用します。

シート全体から最終行を取得 UsedRange

UsedRangeプロパティはシート上の入力済セルを全て返してくれます。

そのため、上のようにA~C列で最終行が違う場合であっても一番下の行である8を返してくれます。

コード説明

ws.UsedRange.Rows.Countからは入力済セルの行の数が得られます。

ws.UsedRange.Rows(ws.UsedRange.Rows.Count)で入力済セルの中から一番下の行を取得します。

最後にRowプロパティによって入力済のセルの行数を取得しています。

《VBA上級者になりたい人へ》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。
この本を読み切れば間違いなくVBA上級者になれます。

created by Rinker
技術評論社
¥3,608 (2024/12/02 20:25:22時点 Amazon調べ-詳細)
VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

VBA

Posted by やろまい