Home » ExcelVBA Rangeオブジェクト » 行・列を表すRange » 行範囲を指定・取得する-Range・EntireRow・Rows

行範囲を指定・取得する-Range・EntireRow・Rows

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「excel マクロ 行範囲指定」
「エクセル マクロ 行範囲 取得 マクロ」
といった検索で、このサイト『インストラクターのネタ帳』へのアクセスがありました。

Excelマクロ・VBAで行範囲の指定を行うには、行範囲を表すRangeオブジェクトを取得するには、どのようなコードを書けばいいのか探していた方による検索です。

行全体を表すRangeオブジェクトを取得するオブジェクト式の、いわば複数行バージョンを探していた検索キーワードです。

[スポンサードリンク]

Rangeプロパティで行範囲を取得するサンプルマクロ

もっとも理解しやすいのは、Excel VBAをお使いならお馴染みの、Rangeプロパティを使うコードでしょう。

Sub 行範囲を選択する_Range()
 Range("1:3").Select
End Sub

オブジェクト式「Range("1:1")」で、1行目全体を表すRangeオブジェクトを取得できます。その引数を変えただけの、複数行版です。

Range・EntireRowプロパティで行範囲を取得するサンプルマクロ

行全体を表すRangeオブジェクトを返す、Range.EntireRowプロパティを組み合わせた、以下のようなオブジェクト式でも行範囲を取得できます。

Sub 行範囲を選択する_RangeとEntireRow()
 Range("A1", "A3").EntireRow.Select
End Sub

Rangeプロパティの引数を2つとも指定した場合、そのセル範囲を表すRangeオブジェクトを取得できます。上記マクロの場合は「Range("A1", "A3")」というオブジェクト式で、A1:A3セルを表すRangeオブジェクトが取得できるわけです。

オブジェクト式「Range("A1", "A3")」で取得したA1:A3セルを表すRangeオブジェクトの、行全体を表すEntireRowプロパティを使えば、行範囲を取得できます。

Range・Cells・EntireRowプロパティで行範囲を取得するサンプルマクロ

「vba cellプロパティで行範囲設定」
という検索キーワードでも、このサイト・インストラクターのネタ帳へのアクセスがあります。

「cellプロパティ」と表現されているのが、Excel VBAでよく使われるCellsプロパティの、単なるタイプミスなのか判断に迷う部分ですが、Cellsプロパティを使って行範囲を取得する方法を探す方は、いらっしゃるはずです。

先の「Range("A1", "A3").EntireRow」というオブジェクト式の、Rangeプロパティの引数を、Cellsプロパティを使ったオブジェクト式にすれば、Cellsプロパティで行範囲を取得できます。

Sub 行範囲を選択する_RangeとCellsとEntireRow()
 Range(Cells(1, "A"), Cells(3, "A")).EntireRow.Select
End Sub

先の「Range("A1", "A3").EntireRow」というオブジェクト式は、Rangeプロパティの引数に「A1」「A3」という文字列を指定していました。

この2つの引数に、文字列ではなくRangeオブジェクトを返す「(Cells(1, "A")」と「Cells(3, "A")」を指定しているのが、「Range(Cells(1, "A"), Cells(3, "A")).EntireRow」というオブジェクト式です。

Rowsプロパティで行範囲を取得するサンプルマクロ

「Rows(1)」というオブジェクト式で、1行目全体を表すRangeオブジェクトを取得できます。このRowsプロパティを使っても行範囲を取得できます。

Sub 行範囲を選択する_Rows()
 Rows("1:3").Select
End Sub

Rowsプロパティの引数には、上記マクロのように文字列も指定することができるのです。

RangeプロパティとRowsプロパティで行範囲を取得するサンプルマクロ

Rowsプロパティと、Rangeプロパティを組み合わせて行範囲を指定することも可能です。

Sub 行範囲を選択する_RangeとRows()
 Range(Rows(1), Rows(3)).Select
End Sub

Rangeプロパティの2つの引数に、行全体を表すRangeオブジェクトを返す、Rowsプロパティを使ったオブジェクト式を指定した、オブジェクト式です。

先にご紹介した、Range・Cells・EntireRowを組み合わせたオブジェクト式「Range(Cells(1, "A"), Cells(3, "A")).EntireRow」が理解できるのなら、こちらのほうがスッキリして良さそうに感じます。

Findメソッドで行範囲を指定するには

「エクセル vba 検索 find 行範囲」
といった検索キーワードでも、このサイト・インストラクターのネタ帳へのアクセスがあります。

Range.Findメソッドで、検索する行範囲を指定する方法を探している方による検索です。

検索範囲の指定は「.Find」の前の、Rangeオブジェクトを取得するオブジェクト式部分で行うわけですから、この記事でご紹介してきた、
  Range("1:3")
  Range(Rows(1), Rows(3))
などのオブジェクト式を「.Find」の前に書いてあげれば、行範囲を指定して検索することができます。

最終更新日時:2020-09-16 13:38

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » 行・列を表すRange » 行範囲を指定・取得する-Range・EntireRow・Rows

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

検索


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

.