「CurrentRegion 先頭行」
という検索キーワードでのアクセスに気がつきました。
下図のような状況のときに、
アクティブセル領域の1行目であるB2:D2セルを表すRangeオブジェクトを取得するには、どのようなコードを書けばいいのか探していらしたのでしょうか。
アクティブセル領域の先頭行を取得する
以下のコードが参考になるでしょう。Dim rng As Range
Set rng = ActiveCell.CurrentRegion.Rows(1)
rng.Select
MsgBox rng.Address(False, False)
End Sub
「ActiveCell.CurrentRegion」でアクティブセル領域を表すRangeオブジェクトを取得し、そのRowsプロパティで行を表すRangeオブジェクトの1行目を表すRangeを取得しています。
アクティブセル領域の先頭セルを含む行全体を取得する
もしかすると上記のような、B2:D2セルを表すRangeを取得したいのではなく、
下図のように、
アクティブセル領域の先頭行を含む行全体を表すセルを表すRangeを、取得したかったの、かも、しれません。
その場合以下のようなコードです。Dim rng As Range
Set rng = ActiveCell.CurrentRegion(1).EntireRow
rng.Select
MsgBox rng.Address(False, False)
End Sub
「ActiveCell.CurrentRegion(1)」でアクティブセル領域の先頭セルを表すRangeオブジェクトを取得し、そのRangeを含む行全体をRange.EntireRowプロパティで取得しています。
アクティブセル領域の先頭行番号を取得する
「vba CurrentRegion 最初のrow」といった検索でのアクセスもあります。
こちらはアクティブセル領域の先頭行番号を取得したいということでしょうか。
MsgBox ActiveCell.CurrentRegion(1).Row
End Sub
「ActiveCell.CurrentRegion(1)」で取得したRangeオブジェクトのRowプロパティで、行番号を取得すればOKです。
2種類のプロパティ
この記事の中で、
ActiveCell.CurrentRegion.Rows(1).Address(False, False)
ActiveCell.CurrentRegion(1).EntireRow.Address(False, False)
ActiveCell.CurrentRegion(1).Row
といった、セルアドレスや行番号を取得するコードが登場しています。
これらのコードに登場する
ActiveCell・CurrentRegion・Rows・EntireRow・Address・Row
は、いずれもプロパティです。
このうち、
ActiveCell
CurrentRegion
Rows
EntireRow
がオブジェクトを取得するためのプロパティで、
Address
Row
が単なるデータを取得するためのプロパティです。
拙著『いちばんやさしいExcel VBAの教本』のp.194に、
それより後ろに「.」をつなげて記述できないプロパティだけが「データを取得するためのプロパティ」で、他のプロパティは「オブジェクトを取得するためのプロパティ」に該当します。と書きました。
この記事に登場した、
Address
Row
が『それより後ろに「.」をつなげて記述できないプロパティ』です。
Home » Excel VBA Rangeオブジェクト » CurrentRegionプロパティ » CurrentRegionの先頭行を取得する