「excel vba 先頭行 取得」
といった検索で、このサイト『インストラクターのネタ帳』へのアクセスが割とあります。
何らかのセル範囲の先頭の行を表すRangeオブジェクトを取得するには、どのようなコードを書けばいいのかを探していらしたのでしょうか。
「先頭行」と表現されているのが、どのようなセルなのかによって、具体的なコードが変わってきます。
先頭行を取得するサンプルマクロ
例えばB2:D4セルの、先頭行であるB2:D2セルを表すRangeオブジェクトを取得するなら、
以下のようなコードです。Dim rng As Range
Set rng = Range("B2:D4").Rows(1)
rng.Select
MsgBox rng.Address(False, False)
End Sub
拙著『いちばんやさしいExcel VBAの教本』では、マクロ記録で作られるコードをもとに、Rowsプロパティをご紹介しています。
このRowsプロパティを、セル範囲を限定して使っているのが、本記事でご紹介している、
Set rng = Range("B2:D4").Rows(1)
です。
RangeオブジェクトのRowsプロパティを使うと、
指定されたセル範囲での、行を表すRangeオブジェクトを取得できます。
上述の「Range("B2:D4").Rows」ならば、
B2:D2
B3:D3
B4:D4
という3個の各行を表すRangeオブジェクトを取得できます。
取得した行を表すRangeオブジェクトの、既定プロパティに「1」を指定することで
Set rng = Range("B2:D4").Rows(1)
1行目・先頭行であるB2:D2セルを表すRangeオブジェクトを取得しています。
先頭セルを含む行全体を取得する
一方以下のような、B2:D4セルの先頭セルを含む2行目全体を表すRangeオブジェクトを取得するなら、
以下のようなコードです。Dim rng As Range
Set rng = Range("B2:D4").Item(1).EntireRow
rng.Select
MsgBox rng.Address(False, False)
End Sub
Range.Item(1)で先頭セルを表すRangeオブジェクトを取得して、Range.EntireRowプロパティで、
先頭セルを含む行全体を表すRangeオブジェクトを取得しています。
最終更新日時:2018-11-09 12:18
Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » 先頭行を取得する-Range.Rows(1)・Range.EntireRow