VBA 空白・結合セル対応!たった1行で最終行を取得する方法を4パターン紹介

この記事は約3分で読めます。

どうもマサヤです!

コードを書くときに最終行を取得したいシーンがかなり発生します。

最終行まで処理を繰り返したいとか、最終行の次の行から値を入れたい、結合セルを含んだ表の最終行の罫線だけを太くしたい等々。

最終行を取得して処理させたいけど、コードがパッと出てこないことが良くあります。

そこで、最終行をたった1行で取得するコード一覧を用意しました!

 

 

 

スポンサーリンク

取得したい最終行でコードは4つに分かれる!

一言で最終行といってますが、取得したい目的によってコードの書き方が下記の4パターンに分かれます。

  1. 連続データの最終行を取得したい場合
  2. 一番下にある行を取得したい場合
  3. 結合セルを含んだ、連続データの最終行を取得したい場合
  4. 結合セルの含んだ、一番下にある行を取得したい場合

 

 

連続データの最終行を取得

連続した表の指定した行から下へ見ていって、空白になる直前の行を取得したいときに使うコードです。

※下図の赤枠のセルを取得※

 

コード

TargetRow = ActiveSheet.Cells(2, 2).End(xlDown).Row

連続データの途中に空白があると最終行がその空白の直前の行を取得します。
途中に空白があっても、関係なく一番下の行を取得したいときは次のコードを利用しましょう。

 

一番下にあるデータの最終行を取得

指定した列で、一番下にあるデータの行を取得します。

連続データの途中に空白があっても関係なく、一番下にある行を取得します。

※下図の赤枠のセルを取得※

コード

TargetRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row

 

 

結合セルを含んだ連続データの最終行を取得

今まで紹介した2パターンで大抵は問題ありませんが、下図のようにセルが結合している場合は正しく最終行が取得できません。

ここでは、セルが結合していても問題なく最終行を取得できるコードを紹介します。

※下図の赤枠のセルを取得※

コード

TargetRow = ActiveSheet.Cells(2, 2).End(xlDown).Offset(1, 0).Row – 1

 

 

結合セルの含んだ、一番下にある行を取得

こちらは一番下の行を取得する結合セル版です。

 

※下図の赤枠のセルを取得※

コード

TargetRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row – 1

 

 

まとめ

私も会社で簡単な処理をVBAで自動化する時は、最終行を取得してから、その行まで繰り返し処理をするというコードをよく書きます。

そして書き方をよく忘れて、以前書いたコードのファイルを開いて、そこからコピペしてます。

ただ、探すのに時間がかかるんです・・・何気にストレス)笑

なので、備忘録としてまとめました。

よかったら私と一緒に使ってあげてください)笑

コメント