VBAでセルを指定する方法には、例えば、A1であれば、Range(“A1”)とCells(1, 1)の2種類があります。どちらも同じセルを指しているため、「結局どちらを使えばいいのか」という疑問を持つ人は少なくありません。この記事では、RangeとCellsの使い分けの基準と、両者を組み合わせたときにできることを整理します。
RangeとCellsの違い
Rangeは、”A1″や”A1:D10″のような文字列でセルの住所を指定する書き方です。Cellsは、Cells(行番号, 列番号)という形で、数字を使ってセルを指定します。
参考書などでは「Rangeは範囲指定、Cellsは単一セルの指定」と説明されることが多いのですが、この説明だけでは実際のコードを書くときに判断がつきにくいという声もよく聞きます。
使い分けの基準:住所が固定か、変数で変わるか
実務上わかりやすい基準は、「住所が固定かどうか」です。
A1やA2:D2のように、常に同じセルを指す場合は、Range(“A1”)、Range(“A1:D2”)のように素直に書けます。
一方、ループ処理(繰り返し処理)などで行番号が変数になる場合、Rangeで書こうとすると”A” & i のような文字列連結が必要になり、コードが読みにくくなります。この場面ではCells(i, 1)のように、変数をそのまま行番号・列番号として渡せるCellsの方が扱いやすくなります。
For i = 1 To 100
Cells(i, 1).Value = "済"
Next i
行や列を数字でそのまま指定できるため、”A” & i のような組み立てが不要になり、コードの意図もそのまま読み取れます。
RangeとCellsを組み合わせる方法
RangeとCellsは、対立する2つの書き方ではなく、組み合わせて使うこともできます。
Range(Cells(1, 1), Cells(10, 4))
この書き方は、Cells(1,1)からCells(10,4)までの範囲、つまりA1:D10を表します。行や列が変数になる場合でも、この形であれば範囲そのものを実行するたびに変えられるように指定できます。
Range(Cells(1, 1), Cells(ls_rw, 4))
変数でls_rwは「last_row(最終ぎょう)」として私はよく使いますが、実行するたびに変わる最終行を使えば、範囲全体を実行時の状態に合わせて動かすことができます。この書き方は、最終行が変わることがある場合の範囲指定として、よく使われます。
使い分けるとき、押さえておきたいこと
① 住所が固定なら、Rangeで素直に書く
A1やA2:D2のように変わらない住所であれば、Range(“A1”)のような書き方で十分です。無理にCellsに置き換える必要はありません。
② 行や列が変数になるなら、Cellsを使う
ループの中で行や列を1つずつ動かす処理では、Cells(i, 1)のように数字をそのまま渡せる書き方の方が扱いやすくなります。
③ 範囲そのものを動かしたいときは、Range(Cells, Cells)を使う
最終行や最終列のように実行するたびに変わる値を使って範囲を指定したいときは、Range(Cells(開始行, 開始列), Cells(終了行, 終了列))の形が使えます。固定の住所指定では対応できない場面で有効です。
まとめ
RangeとCellsは、どちらか一方を選ぶものではなく、住所が固定か変数かによって使い分け、必要に応じて組み合わせるものです。この基準を持っておくと、コードを書くときの迷いが減ります。体系的に学びたい方は、JIMOVEの動画講座もご活用ください。
よくある質問
Q. RangeとCellsは、どちらを優先して覚えるべきですか?
優劣の問題ではありません。住所が固定ならRange、行や列が変数になるならCells、という基準で使い分けるものと理解しておくと、実際のコードで迷いにくくなります。
Q. Range(Cells(1,1), Cells(ls_rw,4))を使えば、データへの追記もできますか?
できません。この書き方はあくまで「今ある最終行までの範囲」を指すもので、既存データの範囲を扱うための書き方です。新しい行に追記したい場合は、ls_rw + 1を使って「最終行の次の行」を指定する必要があります。
Q. Cellsだけで統一して書いてもいいですか?
書けますが、A1やA2:D2のように住所が変わらない場面では、Range(“A1”)のように書いた方が読みやすく、意図も伝わりやすくなります。
動画で学びたい方へ
「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。
VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。



