Home » ExcelVBA Rangeオブジェクト » CurrentRegionプロパティ » CurrentRegionの先頭行を取得する

対象:Excel2010, Excel2013, Windows版Excel2016

「CurrentRegion 先頭行」
という検索キーワードでのアクセスに気がつきました。

下図のような状況のときに、

アクティブセル領域の1行目であるB2:D2セルを表すRangeオブジェクトを取得するには、どのようなコードを書けばいいのか探していらしたのでしょうか。

[スポンサードリンク]

アクティブセル領域の先頭行を取得する

以下のコードが参考になるでしょう。
Sub アクティブセル領域の先頭行を取得する()
 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を、取得したかったの、かも、しれません。

その場合以下のようなコードです。
Sub アクティブセル領域の先頭セルを含む行全体を取得する()
 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」
といった検索でのアクセスもあります。
こちらはアクティブセル領域の先頭行番号を取得したいということでしょうか。
Sub アクティブセル領域の先頭行番号を取得する()
 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 » ExcelVBA Rangeオブジェクト » CurrentRegionプロパティ » CurrentRegionの先頭行を取得する

「CurrentRegionプロパティ」の記事一覧

検索


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

.