和風スパゲティのレシピ

日本語でコーディングするExcelVBA

CurrentRegionの最終行を取得する

CurrentRegionの最終行を取得するコードを解説します。

一発で取得するプロパティは残念ながらありませんので、

Dim セル範囲 As Range
Set セル範囲 = Range("A1").CurrentRegion

Dim LastR As Long
LastR = セル範囲.Rows.Count + セル範囲.Row - 1

と、CurrentRegionをストレートにセル範囲に入れて、その最終行を求めます。


あるセル範囲の最終行は、

  • 最終行 = セル範囲全体の行数 + セル範囲の上部の行数
  • セル範囲の上部の行数 = セル範囲の第1行 - 1

で求まりますね。


この「セル範囲の行数 + セル範囲の第1行 - 1」という式はよく出てきますので、

Function GetLastRセル範囲(セル範囲 As Range) As Long
    GetLastRセル範囲 = セル範囲.Rows.Count + セル範囲.Row - 1
End Function

と、セル範囲を渡すと最終行をくれる関数を作っておくと良いです。


この関数があると、CurrentRegionの最終行も

CurrentRegionの最終行 = GetLastRセル範囲(ActiveSheet.AutoFilter.Range)

これで求まるようになります。


最終行取得は良く扱うコードだけに、関数化のメリットも大きいです。
気が向いたら作ってみてください。

www.limecode.jp