Home » ExcelVBA Rangeオブジェクト » VBAでセルの行番号を取得したい

対象:Excel2007, Excel2010, Excel2013

「excel2010 vba 行番号の取得」
「エクセル マクロ 行番号取得」
「VBA メッセージボックスに何行目かを表示」
といった検索で、このサイト『インストラクターのネタ帳』へのアクセスが時折あります。

何らかのセルの行番号を取得・表示するExcel VBAのコードを探している方による検索です。

行番号はRange.Rowで取得

Excel VBAで、行番号を取得するには、Rangeオブジェクトに用意されているRowプロパティを使います。

行番号を取得する

オブジェクトブラウザーで確認すると、上図のとおりRange.RowプロパティはLong型のデータを返すことがわかります。

[スポンサードリンク]

アクティブセルの行番号を取得するサンプル

以下のSubプロシージャを実行すると、アクティブなセルの行番号がメッセージボックスに表示されます。

Sub アクティブセルの行番号を取得する()
 MsgBox ActiveCell.Row
End Sub

例えば、
A1セルがアクティブな状態で実行すると「1」
G7セルがアクティブな状態で実行すると「7」
がそれぞれ表示されます。

「ActiveCell.Row」というコードは、ActiveCellプロパティでアクティブなセルを表すRangeオブジェクトを取得して、取得したRangeオブジェクトのRowプロパティで行番号を取得しています。このようなコード「ActiveCell.Row」で取得した、アクティブセルの行番号を、VBAのMsgBox関数で表示しています。

選択セルの行番号を取得するサンプル

以下のSubプロシージャを実行すると、選択されているすべてのセルの行番号が、イミディエイトウィンドウに出力されます。

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 » ExcelVBA Rangeオブジェクト » VBAでセルの行番号を取得したい

「ExcelVBA Rangeオブジェクト」の記事一覧

検索


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

.