🥦
Range、Cells、Rows、Coulmnsの使い方まとめ
VBAではセル、行、列を操作することが基本となりますが、それらを操作するプロパティには色々な使い方があるのでごっちゃになりがちです。Range、Rows、Coulmnsを中心にその使い方を整理していきます。
Rangeプロパティ
| 使い方 | 範囲 |
|---|---|
| Range("A1") | セルA1 |
| Range("A1:C3") | セルA1~C3 |
| Range("A1", "C3") | セルA1~C3 |
| Range("A1,B1") | セルA1とB1 |
| Range("1:1") | 1行目 |
| Range("1:3") | 1行目~3行目 |
| Range("A1") | セルA1 |
| Range("A:A") | A列 |
| Range("A:C") | A~C列 |
| Range("未完了") | 「未完了」という名前が付いたセル |
| Range("A" & i) | A列のi行目のセル |
範囲を選択する際に引数へRangeオブジェクトを指定することもできます。
Range("A1", ActiveCell).Value = 100
Cellsプロパティ
Cellsプロパティは行と列をどちらも数値で扱うことが可能です。そのため表の範囲が変更される可能性がある場合によく使われます。for文とセットで使われることが多いようです。
| 使い方 | 範囲 |
|---|---|
| Cells(3, 2) | 3行2列目のセル(セルB3) |
| Cells(3, "B") | 3行B列目のセル(セルB3) |
| Cells(i, j) | i列j行目のセル |
| Cells | シート上の全てのセル |
Rangeプロパティと違ってCellsは単一のセルしか指定できません。 複数範囲を選択するにはRangeプロパティを使うか、RangeとCellsを組み合わせる必要があります。
Range("A1", "C3").Select
Range(Cells(1, 1), Cells(3, 3)).Select
Range("A1", Cells(3, 3)).Select
上記はどれもセルA1~C3を指定します。
Rows
行を選択するにはRowsプロパティを使用します。
| 使い方 | 範囲 |
|---|---|
| Rows | 全行 |
| Rows(1) | 1行目 |
| Rows("1:3") | 1行目~3行目 |
| Range("1:1") | 1行目 |
| Range("1:3") | 1行目"~3行目 |
Columns
列を選択するにはColumnsプロパティを使用します。
| 使い方 | 範囲 |
|---|---|
| Columns | 全列 |
| Columns(1) | A列 |
| Columns("A") | A列 |
| Columns("A:C") | A~C列 |
| Range("A:A") | A列 |
| Range("A:C") | A~C列 |
Range("1:3")とRows("1:3")の違いについて
Range("1:3")とRows("1:3")はどちらも1行目~3行目を表しますが、その意味する内容は微妙に異なります。
Range("1:3") ' 行1~3までの全てのセル
Rows("1:3") ' 行1~3までの全ての行
下記のコードを実行すると違いが分かります。
MsgBox "Range:" & Range("1:3").Count
MsgBox "Range:" & Rows("1:3").Count
実行結果
Range:49152
Rows:3
同じようにColumns("A:C")とRange("A:C")も異なるので注意して下さい。
Discussion