VBA でセルの値や書式などを設定したいセルや範囲を取得する場合には、Range オブジェクトを使います。ここでは、Range オブジェクトを取得する Range プロパティの使い方について説明します。
Range プロパティは VBA で頻繁に使用するので、ぜひ覚えておきましょう。
Range プロパティの使い方
Range オブジェクトを取得する構文は以下の通りです。
1 |
Range("セル範囲") |
引数には A1 や J5 などの1つのセルや、A1:H8, J2:K13 など範囲を指定することができます。
セルを取得する
以下は、セルB2に「おはよう!」と表示する例です。
1 |
Range("B2").Value = "おはよう!" |
Value プロパティを使うことで、取得した Range オブジェクトのセルに値を設定することができます。
範囲を取得する
範囲を取得する例も見てみましょう。以下は、セルA1~セルC4までのすべてのセルに「おはよう!」と表示する例です。
1 |
Range("A1:C4").Value = "おはよう!" |
複数範囲を取得する
それぞれのセル範囲をカンマで区切って指定することで、離れた位置にある範囲を複数取得することができます。
以下は、セルA1、セルC3、セル範囲 E1~F5 に「おはよう!」と表示する例です。
1 |
Range("A1,C3,E1:F5").Value = "おはよう!" |
シートを指定してセルを取得する
Range("セル範囲") と記述した場合は、現在のアクティブなシートのセル範囲が取得されます。
もし特定のシートにあるセルを指定したい場合には以下のように記述します。
1 |
Worksheets("シート名").Range("セル範囲") |
以下は、Sheet2 の B2 のセルに「おはよう!」と表示する例です。
1 |
Worksheets("Sheet2").Range("B2").Value = "おはよう!" |
Range と Cell の違い
Cells プロパティを利用すれば Range オブジェクトを取得することもできます。
1 |
Cells(行番号, 列番号) |
Range プロパティと違い、行番号も列番号も数字で指定します。数字は1から始まり、たとえば A1 だと Cells(1, 1)、B2 だと Cells(2, 2) のような形になります。
Cells プロパティから得られるオブジェクトは Cell オブジェクトではなくRange オブジェクトです。
Range と Cells と主な違いは以下の通りです。
・Cells は独立したセル範囲しか指定できない。
・Cells の方が Range より処理スピートが速い。
・Cells は繰り返し処理を行う場合に番号で指定できるので、簡潔に記述できる。
たとえば、以下のような For Next 文を使用する場合は、Range プロパティより Cells プロパティの方が適しています。
1 2 3 4 |
Dim i As Integer For i = 1 To 5 Cells(1, i).Value = "おはよう!" Next |
Cellsプロパティを使ってセル A1 からセル E1 に「おはよう!」と表示されます。
プログラムによって Cells プロパティと Range プロパティを使い分けるといいでしょう。