🥦

Range、Cells、Rows、Coulmnsの使い方まとめ

2022/12/16に公開

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