「excel マクロ 行範囲指定」
「エクセル マクロ 行範囲 取得 マクロ」
といった検索で、このサイト『インストラクターのネタ帳』へのアクセスがありました。
Excelマクロ・VBAで行範囲の指定を行うには、行範囲を表すRangeオブジェクトを取得するには、どのようなコードを書けばいいのか探していた方による検索です。
行全体を表すRangeオブジェクトを取得するオブジェクト式の、いわば複数行バージョンを探していた検索キーワードです。
Rangeプロパティで行範囲を取得するサンプルマクロ
もっとも理解しやすいのは、Excel VBAをお使いならお馴染みの、Rangeプロパティを使うコードでしょう。
Range("1:3").Select
End Sub
オブジェクト式「Range("1:1")」で、1行目全体を表すRangeオブジェクトを取得できます。その引数を変えただけの、複数行版です。
Range・EntireRowプロパティで行範囲を取得するサンプルマクロ
行全体を表すRangeオブジェクトを返す、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プロパティで行範囲を取得できます。
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プロパティを使っても行範囲を取得できます。
Rows("1:3").Select
End Sub
Rowsプロパティの引数には、上記マクロのように文字列も指定することができるのです。
RangeプロパティとRowsプロパティで行範囲を取得するサンプルマクロ
Rowsプロパティと、Rangeプロパティを組み合わせて行範囲を指定することも可能です。
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
- Newer:VBAでLARGE関数を利用する
- Older:Excelマクロ入門講座 2016-6-18(土)9:30より
Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » 行範囲を指定・取得する-Range・EntireRow・Rows