【VBA】CellsとRangeを使い分けるポイントを解説
シート上のセルを指定する方法はCellsとRangeの2つがあります。
どちらもセルを指定できるのですが、微妙にできることが異なります。
そこで今回は、CellsとRangeのできることの違いを整理して、使い分けのポイントを紹介したいと思います。
両者の違いを理解して、効率的なプログラミングを目指してみてください。
CellsとRangeのできることの違い
Cells | Range | |
---|---|---|
行または列に変数を使う | ○ | × |
範囲指定 | × | ○ |
入力補完(インテリセンス) | × | ○ |
CellsとRangeのできることを比較するとこの表のように整理できます。
各内容について1つずつご紹介します。
行または列に変数を使う
Sub Sample1()
Dim i As Long
For i = 1 To 10
Cells(i, 1) = i 'Rangeではできない
Next
End Sub
CellsとRangeの大きな違いは、変数が使えるかどうかです。
Rangeは"A1″のように文字列でセルを指定するので、For文などで繰り返し処理するのに向いていません。
そのため、サンプルコードのように上から順番に処理するような際にはCellsを選ぶこととなります。
入力補完(インテリセンス)
Rangeの良いところは入力補完(インテリセンス)が使えることです。
上の画像のようにRangeで使用できるプロパティが候補表示され、簡単に選ぶことができます。
Cells(X, Y)とすると、VBAの仕様の関係で残念ながら入力補完(インテリセンス)ができません。
範囲指定
Sub Sample2()
Range("A1:E5").Select
End Sub
Rangeでは"セル:セル"とすることで簡単に複数範囲を指定することができます。
Cellsでは1つのセルしか指定できないため、Resizeプロパティで範囲を広げる必要があります。
Resizeプロパティについては下記記事を参照ください。
CellsとRangeの使い分けのポイント
Cells | Range | |
---|---|---|
行または列に変数を使う | ○ | × |
範囲指定 | × | ○ |
入力補完(インテリセンス) | × | ○ |
最後に使い分けのポイントを説明します。
VBAでは繰り返し処理をすることが多いため、For文を使うことが多くなります。
そのため、For文などで変数を使う場合はCellsを使うのがベターとなります。
反対に変数を使わないときは全体的にメリットのあるRangeを使用しましょう。