Home » ExcelVBA Rangeオブジェクト » 行・列を表すRange » 先頭行を取得する-Range.Rows(1)・Range.EntireRow

先頭行を取得する-Range.Rows(1)・Range.EntireRow

動作検証バージョン:Windows版Excel(バージョン1809 ビルド10827.20181)

「excel vba 先頭行 取得」
といった検索で、このサイト『インストラクターのネタ帳』へのアクセスが割とあります。

何らかのセル範囲の先頭の行を表すRangeオブジェクトを取得するには、どのようなコードを書けばいいのかを探していらしたのでしょうか。

「先頭行」と表現されているのが、どのようなセルなのかによって、具体的なコードが変わってきます。

[スポンサードリンク]

先頭行を取得するサンプルマクロ

例えばB2:D4セルの、先頭行であるB2:D2セルを表すRangeオブジェクトを取得するなら、

先頭行の取得 Range.Rows(1)

以下のようなコードです。
Sub 先頭行を取得する()
 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オブジェクトを取得するなら、

先頭行の取得 Range.EntireRow

以下のようなコードです。
Sub 先頭セルを含む行全体を取得する()
 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 » ExcelVBA Rangeオブジェクト » 行・列を表すRange » 先頭行を取得する-Range.Rows(1)・Range.EntireRow

「行・列を表すRange」の記事一覧

検索


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

.