「excel2010 vba 行番号の取得」
「エクセル マクロ 行番号取得」
「VBA メッセージボックスに何行目かを表示」
といった検索で、このサイト『インストラクターのネタ帳』へのアクセスが時折あります。
何らかのセルの行番号を取得・表示するExcel VBAのコードを探している方による検索です。
行番号はRange.Rowで取得
Excel VBAで、行番号を取得するには、Rangeオブジェクトに用意されているRowプロパティを使います。
オブジェクトブラウザーで確認すると、上図のとおりRange.RowプロパティはLong型のデータを返すことがわかります。
アクティブセルの行番号を取得するサンプル
以下のSubプロシージャを実行すると、アクティブなセルの行番号がメッセージボックスに表示されます。
MsgBox ActiveCell.Row
End Sub
例えば、
A1セルがアクティブな状態で実行すると「1」
G7セルがアクティブな状態で実行すると「7」
がそれぞれ表示されます。
「ActiveCell.Row」というコードは、ActiveCellプロパティでアクティブなセルを表すRangeオブジェクトを取得して、取得したRangeオブジェクトのRowプロパティで行番号を取得しています。このようなコード「ActiveCell.Row」で取得した、アクティブセルの行番号を、VBAのMsgBox関数で表示しています。
選択セルの行番号を取得するサンプル
以下のSubプロシージャを実行すると、選択されているすべてのセルの行番号が、イミディエイトウィンドウに出力されます。
Dim rng As Range
For Each rng In Selection
Debug.Print rng.Row
Next
End Sub
選択されているセルに対してFor Each~Nextループを回して、
For Each rng In Selection
Range.Rowプロパティで取得した行番号を、イミディエイトウィンドウに出力しています。
Debug.Print rng.Row
最終行番号を取得する場合もRange.Row
Range("A1").End(xlDown).Rowの場合
A1セルから隙間なくデータが入力されているときに最終行番号を取得してメッセージボックスに表示する例として
Range("A1").End(xlDown).Row
というコードをご紹介しています。これも考え方は同じです。
A1セルを表すRangeオブジェクトを、Rangeプロパティの引数に「A1」を指定することで取得して、そのA1セルから下方向の終端セルをEndプロパティの引数に定数「xlDown」を指定することで取得して、
取得したRangeオブジェクトのRowプロパティで行番号を取得しています。
Cells(Rows.Count, 1).End(xlUp).Rowの場合
A列にデータ入力されているけれど途中に空白セルがあるときに最終行番号を取得してメッセージボックスに表示するサンプルとして
Cells(Rows.Count, 1).End(xlUp).Row
というコードをご紹介しています。これも考え方は同じです。
A列の一番下のセル(.xlsxならA1048576セル・2003までの.xls形式ならA65536)を表すRangeオブジェクトを、オブジェクト式「Cells(Rows.Count, 1)」で取得して、取得したRangeオブジェクトの上方向の終端セルを表すRangeオブジェクトをEndプロパティの引数に定数「xlUp」を指定することで取得して、取得したRangeオブジェクトのRowプロパティで行番号を取得しています。
Excel VBAで行番号を取得するには、Rangeオブジェクトに用意されているRowプロパティを使ってください。
最終更新日時:2020-09-14 08:23
Home » Excel VBA Rangeオブジェクト » VBAでセルの行番号を取得したい