目次

オブジェクト型

変数のデータ型を「Range」で宣言。
変数のデータ型を「Range」で宣言。

今回の投稿は、 Excel VBA で変数にセル範囲を格納して使用する方法を試してみました。

変数に、数字、文字を代入して使用する事が多いですが、変数にはオブジェクト型というデータ型でセル範囲への参照を代入しておくことも出来るようです。

具体的には、 Dim 変数名 As Range という書式で記述して、変数の宣言を行ってから、その変数にセル範囲をセットして使用するようです。

変数にセル範囲を代入しておくと、同じセル範囲を短い記述で繰り返し利用できるので便利かもしれません。

目次まで戻る

マクロの一例

早速、以下のマクロのコードを作成してみました。

変数 a に A1:A3 のセル範囲への参照を代入しています。

その後、変数 a に代入されているセル範囲を対象にして、値の変更、背景色の着色、フォントスタイルの変更を行うマクロになっています。

マクロの最後で Set a = Nothing と記述して、変数 a にセットされていたセル範囲への参照を解除しています。

Sub 変数をオブジェクト型で宣言するマクロ()

Dim a As Range '変数宣言

Set a = Range("A1:A3") '参照設定

a.Value = WorksheetFunction.Transpose(Array("A", "B", "C")) '文字入力

a.Interior.ColorIndex = 6 '背景色変更

a.Font.Italic = True 'フォントスタイル変更

Set a = Nothing '参照解除

End Sub

上のマクロを空白のワークシート上で実行すると、以下の画像の結果になりました。

変数 a を何度も使用して目的の処理を行うことができました。

同じセル範囲に複数の処理を行いました。
同じセル範囲に複数の処理を行いました。

目次まで戻る

ループ処理を行う場合

変数 a にセル範囲を代入して、その範囲をループ処理する場合のマクロも作成してみました。

Sub 変数に代入されたセル範囲をループする場合のマクロ()

Dim a As Range
Dim b As Range

Set a = Range("A1:A3")

For Each b In a

b.Value = b.Row & "," & b.Column

Next

Set a = Nothing

End Sub

上のマクロを空白のワークシート上で実行してみると、以下の画像の結果になりました。

変数 a にセットされたセル範囲のループ処理を行うことが出来たようです。

セル範囲をループ処理出来ました。
セル範囲をループ処理出来ました。

以上閲覧ありがとうございました。

目次まで戻る

同じカテゴリの投稿(Excel VBA)

前後の投稿