
先日Cellsプロパティで行と列を別々に指定してセルを参照する方法について解説しました。
【Excel VBA】行と列を別々に指定してセルを参照するCellsプロパティまとめ | Excelを制する者は人生を制す ~No Excel No Life~
今度は単一セルではなく、行単位で参照することができるプロパティもExcel VBAには用意されており、それはRowsプロパティになります。
今回は指定したオブジェクトの行を参照するRowsプロパティについてまとめていきます。
Rowsプロパティの基本構文
オブジェクト.Rows(インデックス番号)
オブジェクト
Rowsプロパティを指定するオブジェクトを指定します。
この部分は省略可能です。
省略すると、アクティブブックのアクティブシートを指定していることになります。(マクロを実行したときに開いているもの)
Rangeオブジェクトを指定すると、そのセルの中で指定した行を参照します。
オブジェクトに関しては下記記事をご参照ください。
Excelのオブジェクトの基礎知識まとめ | Excelを制する者は人生を制す ~No Excel No Life~
インデックス番号
Rowsプロパティで参照したい行番号のことで、整数で指定します。
たとえば、5行目を指定したい場合、「5」を指定してあげるということになります。
()[かっこ]含めてインデックス番号を省略すると全行を参照します。
使用例①【オブジェクトを指定した単一行選択】
もっともオーソドックスな使用例として単一行を参照します。
まず、Rangeオブジェクト指定ありのものです。
使用例としてSelectメソッド(対象オブジェクトを選択)を使用しています。(以後の使用例と共通)
1 2 3 |
Sub 単一行選択①() Range("B2").Rows(3).Select End Sub |
マクロの動作イメージ
B2セルから3行目のB4セルが選択されました。
使用例②【オブジェクトを省略して単一行選択】
同じく単一行を参照ですが、今度はオブジェクト指定なしのものです。
1 2 3 |
Sub 単一行選択②() Rows(3).Select End Sub |
マクロの動作イメージ
3行目が選択されました。
使用例③【オブジェクトを指定して複数行を選択】
続いて複数行を参照します。
複数行の場合、起点のインデックス番号と終点のインデックス番号の間に:[コロン]でつなげ、さらに””[ダブルクォーテーション]で囲ってあげます。
まず、Rangeオブジェクト指定ありのものです。
1 2 3 |
Sub 複数行選択①() Range("B2").Rows("1:3").Select End Sub |
マクロの動作イメージ
B2セルから3行分となるB2:B4のセル範囲が選択されました。
使用例④【オブジェクトを省略して複数行を選択】
同じく複数行を参照ですが、今度はオブジェクト指定なしのものです。
1 2 3 |
Sub 複数行選択②() Rows("1:3").Select End Sub |
マクロの動作イメージ
1~3行目が選択されました。
使用例⑤【オブジェクトを指定して全行を選択】
全行を選択する場合、()[かっこ]もインデックス番号も不要です。
まず、Rangeオブジェクト指定ありのものです。
1 2 3 |
Sub 全行選択①() Range("B2:B3").Rows.Select End Sub |
マクロの動作イメージ
指定したオブジェクト内の全行を選択します。
今回はRangeオブジェクトのB2:B3が全行となります。
指定のオブジェクトが単一セルであれば1行分のみの参照となります。
使用例⑥【オブジェクトを省略して全行を選択】
同じく全行を参照ですが、今度はオブジェクト指定なしのものです。
1 2 3 |
Sub 全行選択②() Rows.Select End Sub |
マクロの動作イメージ
ワークシート内の全行が選択されます。
使用例⑦【セル参照】
あまり美しいコードではありませんが、ワークシート上に入力している数字や文字列もRangeプロパティ上で参照することが可能です。
今回はB3セルに入っている「2」を列番号に組み込みたいとします。
その場合、Rowsプロパティ内のインデックス番号に「Range(“B3”)」とRangeプロパティを入れてあげるとB3セルの「2」の値を参照することが可能になります。
1 2 3 |
Sub セル参照() Range("B2").Rows(Range("B3")).Select End Sub |
マクロの動作イメージ
B2セルから2行目のB3セルが選択されました。
使用例⑧【変数参照】
同じプロシージャ内で設定している変数もRowsプロパティの一部として使用可能です。
今回は変数iが「5」を示しており、インデックス番号として指定したいとします。
その場合、Rowsプロパティ内にインデックス番号の部分に変数「i」を入れてあげます。
先ほどの使用例⑦よりもコードが簡潔であるため、あらかじめセルの値を参照したい場合は変数に格納してから行なうと良いですね。
1 2 3 4 5 |
Sub 変数参照() Dim i As Integer i = 5 Range("B2").Rows(i).Select End Sub |
マクロの動作イメージ
B2セルから5行目のB6セルが選択されました。
まとめ
Rowsプロパティは引数の指定方法が単一の場合と複数の場合と全行の場合で若干記述の仕方が異なります。
また、オブジェクトの指定有無で動作も変わるため、実際にコードを試しながら活用されると理解度が高まると思います(・∀・)