【たった1行】汎用性抜群の「最終行取得の方法」をわかりやすく解説!【Excel VBA】

こんにちは!『ルウちゃんのExcel Labo』管理人の@rouxchanblogです!

今回はこのような悩みについて解説します。

ルウちゃん

繰り返し処理をしたいけど最終行の取得がわからない!
どうやったらいいのかおしえて!

この記事でわかるようになること
  1. 最終行を取得する基礎的な考え方
  2. 最終行を取得することでできること
  3. 使う上で注意しておくこと←超重要
目次

サンプルコードの紹介

解説の前にどんなコードを使うのか紹介します!

「解説は必要ない!」という方はコピペして使ってください!

Dim 最終行 '「最終行」という変数を宣言
    
最終行 = Cells(Rows.Count, 1).End(xlUp).Row

Cells(最終行, 2) = "←ここが最終行です"
5行目
10行目

このように行数が変わっても最終行を取得することができます。

次は具体的な方法について解説していきます!

最終行の取得の方法

まずはExcelの機能で最終行を取得する方法を考えてみましょう!

最終行まで飛ぶにはシートの最終行(1048576行目)から「Ctrl」+「↑」で飛ぶことができます。

これと同じことをVBAでやるだけです!

VBAでは「Rows.Count」でシートの最終行(1048576行目)を求めることができます。

そして「End(xlUp)」で「Ctrl」+「↑」このショートカットキーと同じ処理を行えます。

これら二つを組み合わせることによって最終行を求めているのです!

補足として「Endプロパティ」は「End(xlToLeft)」と記述すると「Ctrl」+「←」と同じ機能が使えます!

スクロールできます
定数内容キーボード操作
xlUp-4162上方向への移動[Ctrl] + [↑]
xlDown-4121下方向への移動[Ctrl] + [↓]
xlToLeft-4159左方向への移動[Ctrl] + [←]
xlToRight-4161右方法への移動[Ctrl] + [→]
引用:mougモーグ

次に最終行を取得するメリットについて解説します。

最終行を取得するメリット

最終行を取得は繰り返し処理をする時に必須になります。

Dim 最終行 '「最終行」という変数を宣言
Dim i As Long '「i」という変数を宣言
    
最終行 = Cells(Rows.Count, 1).End(xlUp).Row '最終行を取得
    
For i = 1 To 最終行 '1〜最終行まで繰り返し処理させる
Cells(i, 2) = i & "行目" '2列目に行数を入力する
Next i '繰り返し処理を終了する
実行結果

このように繰り返し処理と組み合わせることで可能性を広げることができます。

For文の終了を指定する時は取得した最終行を入れることで変化の強いコードになりますのでおすすめです!

使用上での注意点

最終行の取得は「End(xlUp)」と記述すると説明しましたがこれには理由があります。

「End(xlDown)」で「Ctrl」+「↓」をしても同じように最終行まで飛ぶこと自体は可能です。

しかし、間に空白セルがあると最終行まで飛ぶことができないので注意してください。

Dim 最終行 '「最終行」という変数を宣言
    
最終行 = Cells(1, 1).End(xlDown).Row

Cells(最終行, 2) = "←ここが最終行です"
End(xlDown)の場合

このように途中で止まってしまうので最終行の取得には「End(xlUp)」を使いましょう!

まとめ

今回は最終行を取得する方法を解説してきました。

VBAを学んで最初に「なんだこれ?」と躓いてしまうポイントだと思います。

実際に筆者も意味が分からず苦戦しました。

よく分からない時こそ1つ1つの動きを確認しながら実行していくことが大切です。

まずはコピペで使ってみるのをおすすめなのでぜひこの記事を繰り返しみながら理解を深めてください!

この記事で少しでも皆さんのお役に立てれば幸いです!

忘れないうちにお気に入り登録もお願いします!

ありがとうございました!

/// お得な情報 ///

すぐに使えて便利なテクニックが650個も手に入る!

気になる人は今すぐクリック!!

 

目次