【VBA】Cells と Range の違い

Excel マクロ(VBA)

Excel VBAで初心者にとって理解するのが難しいことの一つに、CellsとRangeの違いがあります。今回はこの二つの使い分けについて説明します。

スポンサーリンク

CellsとRangeの使い分け

いきなり詳細に説明してもなかなか頭に入らないと思いますので、まずはシンプルに、以下のように理解しましょう。

Cellsを使うケースの代表例

  • R1C1方式で指定するとき
  • 変数を扱う時
  • シート全体を指定する時

Rangeを使うケースの代表例

  • A1方式で指定するとき
  • 複数範囲を指定する時

以下ではもう少し詳しく説明します。

そもそもCellsとRangeとは何か

Cellsとは、セルを個別に選択するプロパティです。

一方でRangeとは、言葉の通り、ある範囲を指定するプロパティです。

感覚的には、Cellsの方が個別のセルを扱うイメージで、Rangeの方が”範囲”のイメージです。

スポンサーリンク

Cellsを使うケース

R1C1で指定するとき

R1C1方式というのは、列と行をそれぞれ数字で表示する方式です。普段我々がよく使うのはA1方式といって、列数はアルファベットで表記します。例えば以下のセルは”B2″セルとなります。一方のR1C1方式では、行と列をそれぞれ数字で認識し、例えば以下のセルは”R2C2″となります。

R1C1方式の場合に、例えばF1セルを黄色く塗りつぶす場合は以下のようにCellsを使用します。

Cells(1, 6).Interior.ColorIndex = 6

変数を扱う時

R1C1方式とも関わりますが、変数を扱う時はCellsが適しています。

例えば、最終行をlastrowという変数で取得している場合に、A列の最終行を指定したい時は、Range(“A” & lastrow)ではなく、Cells(lastrow, 1)と書くようにしましょう。

シート全体を指定する時

シート全体を指定する時は、Cellsを使うと簡単で、単に”Cells”とするだけで、すべてのセルを指定できます。

例えばシート上のすべてのセルのフォントを変えるときは、以下のようになります。

Cells.Font.Name  = “使用したいフォント”

Rangeを使うケース

A1方式で指定するとき

R1C1方式のときはCellsを使いますが、逆にA1方式の場合にはRangeを使用します。

複数範囲を指定するとき

また、複数範囲を指定したい時が挙げられます。例えばA2-C2列とG2列とJ2-K2列の値を消したい時は、以下のように書けます。

Range(“A:C, G:G, J:K”).ClearContents

コメント

タイトルとURLをコピーしました