Excel VBAでセルを指定する方法は大きく Range と Cells の2種類があります。どちらを使うべきか迷いやすいので、早見表にまとめました。
早見表
| 項目 | Range | Cells |
|---|---|---|
| 指定方法 | 文字列で指定(例: "A1", "B2:C5") | 行番号・列番号で指定(例: (1,1), (2,3)) |
| わかりやすさ | 人間にとって直感的(Excelの見た目と同じ) | プログラム的(数値で場所を指定) |
| 柔軟性 | 固定セルや範囲を指定するのに便利 | 繰り返し処理や動的な位置指定に便利 |
| 範囲指定 | "A1:C10" のように文字列でまとめて指定できる | Range(Cells(1,1), Cells(10,3)) のように組み合わせて指定 |
| ループとの相性 | 不向き(文字列を組み立てる必要あり) | 向いている(行番号や列番号を変数で扱える) |
| 例:A1に値を入れる | Range("A1").Value = 100 | Cells(1,1).Value = 100 |
| 例:A1〜A10に連番を入れる | 少し複雑(Range("A" & i) のように文字列結合が必要) | シンプル(Cells(i,1) でOK) |
使い分けのコツ
- 固定セルや見た目でわかる範囲 → Range
例: 「A1にタイトルを入れる」「A1〜C1を見出しにする」 - 繰り返し処理や動的に変わるセル → Cells
例: 「1行目から100行目まで順番に処理」「最終行まで自動で処理」 - 範囲を動的に指定したいとき → Range + Cells の組み合わせ
Range(Cells(1,1), Cells(10,3)).Interior.Color = vbYellow ' A1〜C10を黄色に
まとめ
- Range は「人間にわかりやすい」
- Cells は「プログラムに書きやすい」
- 両方を組み合わせると最強
