Home » ExcelVBA Rangeオブジェクト » Endプロパティ » 最終行を取得するVBAのコード-End(xlDown)

最終行を取得するVBAのコード-End(xlDown)

対象:Excel2003, Excel2007, Excel2010, Excel2013

「excel vba 最終行取得」
「エクセル vba 最終行の取得」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。

VBA(Visual Basic for Applications)で、Excelマクロを作るときに生じる定番の疑問の一つです。

Excel VBAで最終行を取得する方法を探している方による検索です。

[スポンサードリンク]

最終行番号を取得するサンプルコード

まずは、参考になりそうなコードをご紹介しておきます。
▼最終行の行番号をメッセージボックスに表示するコード
※A列にデータが隙間なく入力されているときに最終行の行番号をメッセージボックスに表示する例
MsgBox Range("A1").End(xlDown).Row

上記のコードを実行すると、A列の最終行の行番号がメッセージボックスに表示されます。

Range("A1").End(xlDown)というコードの意味

Excelでセル選択を行うのにとても便利な[Ctrl]+矢印キーという操作があります。

Excelには、データの途切れるセルがわかっているのです。
データの途切れるセルがわかっているので[Ctrl]+矢印キーというショートカットキーで、データの途切れるセルを選択できるわけです。

そのデータの途切れるセルをVBAで取得するときに利用するのが、RangeオブジェクトのEndプロパティです。

データの途切れる箇所と一言で言っても、4方向あります。
上・下・右・左の4方向です。

どの方向のデータの途切れるセルを取得したいのかを指定するのがEndプロパティの後ろの括弧の中の引数です。
 Range("A1").End(xlDown)
というコードのxlDownが下方向のデータの途切れるセルを意味しています。

右なら、xlToLeft
左なら、xlToRight
上なら、xlUp
を引数に指定してください。

A1セルから下方向のデータの途切れるセル(A列の最終セル)の、行番号を取得するためにRowプロパティを使い
 Range("A1").End(xlDown).Row
というコードにしています。

上記ではメッセージボックスに行番号をいきなり表示するので
 MsgBox Range("A1").End(xlDown).Row
としていますが、その行番号をプロシージャの中で使うのなら
 end_row = Range("A1").End(xlDown).Row
のような形で変数に格納して使うと便利でしょう。

最終行をどうしたいのかでRange("A1").End(xlDown)の後ろは変わります

行番号を使うのではなく、
A列の一番下のセルを選択したいのならば、
 Range("A1").End(xlDown).Select
最終行全体を選択したいのならば、
 Range("A1").End(xlDown).EntireRow.Select
といったコードです。

もし表がB6セルから作ってあるのなら
 Range("B6").End(xlDown).Row
 Range("B6").End(xlDown).Select
 Range("B6").End(xlDown).EntireRow.Select
といったコードです。

これが、Excel VBAで最終行を取得する基本です。

ただし、この基本で最終行を取得できないケースも表のつくり方によっては生じてしまいます。その解決方法については近日中に別記事としてご紹介します。途中に空白セルがある場合に最終行を取得するコードをご紹介しました。2013-09-11)

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » Endプロパティ » 最終行を取得するVBAのコード-End(xlDown)

Home » ExcelVBA Rangeオブジェクト » Endプロパティ » 最終行を取得するVBAのコード-End(xlDown)

Copyright © インストラクターのネタ帳 All Rights Reserved.

.