Rowsプロパティ、Columnsプロパティ
行や列を選択や参照する場合に、Rowsプロパティ(行)やColumnsプロパティ(列)を利用します。
RowsプロパティとColumnsプロパティはRangeオブジェクトを返します。
引数の行番号や列番号を設定することで、参照する行や列を指定することが出来ます。
よく使う機能として、セル範囲の行数や列数を取得するCountプロパティはRows、Columnsプロパティで使用します。
構文
オブジェクト.Rows(行番号)
オブジェクト.Columns(列番号)
- オブジェクト
Applicationオブジェクト、Worksheetオブジェクト、Rangeオブジェクトのいずれかを指定します。 - 行番号
1行の場合はシートの行番号を Rows(2) のように指定します。
複数行の場合は Rows(“1:4”) のように隣接する行番号同士をコロン(:)で連結してダブルクォーテーション(“)で囲います。
行番号未設定時の Rows() は全行が対象になります。 - 列番号
1列の場合はシートの列の英字を Columns(“C”) のように指定するか、R1C1形式での列の番号を Columns(3) のように指定します。
複数行の場合は 隣接する英字列名を Columns(“A:D”) のように書きます。列の番号での Columns(1:3) や Columns(“1:3”) のような書き方は出来ません。
列番号未設定時の Columns() は全列が対象になります。
複数の行範囲や列範囲の指定はRangeオブジェクトで行う
1~3行目と6行目、のような複数の範囲をRowsプロパティやColumnsプロパティで指定することはできません。
このような場合は親オブジェクトのRangeオブジェクトで、Range(“1:3,6:6”) のように指定します。
この場合、RowsプロパティやColumnsプロパティの引数に、
1 |
Range("1:3,5:5").Rows("6:7").Select |
のようなRangeオブジェクトで1~3行目と5行目と書いているのにRowsプロパティで6~7行目を参照するというような、参照範囲が異なる設定がされた場合、RowsプロパティやColumnsプロパティの引数が優先されます。
そのため上のコード例では6行目と7行目が選択された状態になります。
サンプルコード
行の参照
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub RowsTest1() Dim r As Range '// 1行 Set r = ActiveSheet.Rows(2) Debug.Print r.Count '// 複数行 Set r = ActiveSheet.Rows("1:3") Debug.Print r.Count '// 全行 Set r = ActiveSheet.Rows() Debug.Print r.Count End Sub |
実行結果
1
3
1048576
列の参照
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub ColumnsTest1() Dim r As Range '// 1列 Set r = ActiveSheet.Columns("B") Debug.Print r.Count Set r = ActiveSheet.Columns(2) Debug.Print r.Count '// 複数列 Set r = ActiveSheet.Columns("A:C") Debug.Print r.Count '// 全列 Set r = ActiveSheet.Columns() Debug.Print r.Count End Sub |
実行結果
1
1
3
16384
複数の行範囲の参照
1 2 3 4 5 6 7 8 |
Sub RowsTest2() Dim r As Range '// 複数の行範囲 Set r = Range("1:3,5:5").Rows() r.Select Debug.Print r.Count End Sub |
実行結果
3
Rangeオブジェクトで指定した離れたセル範囲が選択されます。