
Excel VBA を始めた初心者さんが、
ほぼ100%つまずくポイントがあります。
それが――
「Range と Cells の違いって何?」
コードを書いていると、
-
どっちを使えばいいの?
-
同じようにセルを指定してるように見える…
-
Range("A1") と Cells(1,1) って結局同じなの?
と悩みがちです。
でも大丈夫。
この記事でスッキリ理解できます✨
■ Range と Cells は “セルの指定方法” が違うだけ
結論から言うと、Range と Cells は
「セルを指定する書き方の違い」です。
◆ Range:文字で指定する(人間に優しい)
Range は、Excel の見たまんまの書き方で指定します。
直感的で覚えやすいのがメリット。
◆ Cells:数字で指定する(マクロに優しい)
Cells(row, column) という形で
「行番号・列番号で指定」します。
列番号が数字なので、ループとの相性が抜群です。
■ 例:同じセルを Range と Cells で比較
| 指定 | 意味 |
|---|---|
Range("A1") |
A1セル |
Cells(1,1) |
A1セル |
はい、こうして見ると “同じセル” です。
-
Range:文字(A1)
-
Cells:数字(1,1)
ただ違うのはこの部分だけ。
■ ループでは Cells が圧倒的に便利
例えば、1行目に1〜10の数字を入れる場合:
Range だと大変…
Cells なら超スマート!
このため多くの VBA プログラマーは
ループや自動処理では Cells をメインで使います。
■ Range と Cells を組み合わせることもできる
実務では、Range(Cells(), Cells()) の形がよく使われます。
例:A1〜D5 の範囲を指定する
つまり、
-
開始セル(A1)
-
終了セル(D5)
を “Cells で数字指定している” という使い方です。
ループと組み合わせると最強になります。
■ 大事な注意:Cells の省略は危険
初心者のつまずきポイントがこれ。
一見普通に見えますが、
どのシートの Cells か? は明確になっていません。
そのため、意図しないシートに書き込まれることがあります。
それを防ぐためにはシートを明記する
Range も同じです👇
■ Range が向いている場面・Cells が向いている場面
| 目的 | Range | Cells |
|---|---|---|
| 固定セルを指定 | ◎ | 〇 |
| 表示のまま指定(A1, A:D など) | ◎ | ✕(不可能) |
| ループ処理 | △ | ◎ |
| 行番号/列番号で動的に指定 | △ | ◎ |
| コードの読みやすさ重視 | ◎ | △ |
■ まとめ
-
Range → “A1” のように文字で指定する、人間が読みやすい
-
Cells → (行番号, 列番号) で指定する、マクロが扱いやすい
-
同じセルでも書き方が違うだけ
Range("A1")=Cells(1,1) -
ループや動的な処理は Cells が最強
-
シートを明記しないとトラブルの元!