このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】CellsとRangeを使い分けるポイントを解説

シート上のセルを指定する方法はCellsとRangeの2つがあります。

どちらもセルを指定できるのですが、微妙にできることが異なります。

そこで今回は、CellsとRangeのできることの違いを整理して、使い分けのポイントを紹介したいと思います。

両者の違いを理解して、効率的なプログラミングを目指してみてください。

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらうのはいかがでしょうか?
マクロの作成請負をしていますので、こちらからご相談ください。

CellsとRangeのできることの違い

CellsRange
行または列に変数を使う×
範囲指定×
入力補完(インテリセンス)×
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の使い分けのポイント

CellsRange
行または列に変数を使う×
範囲指定×
入力補完(インテリセンス)×
CellsとRangeのできることの違い

最後に使い分けのポイントを説明します。

VBAでは繰り返し処理をすることが多いため、For文を使うことが多くなります。

そのため、For文などで変数を使う場合はCellsを使うのがベターとなります。

反対に変数を使わないときは全体的にメリットのあるRangeを使用しましょう。

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらうのはいかがでしょうか?
マクロの作成請負をしていますので、こちらからご相談ください。

VBA

Posted by やろまい