目次
結合
今回は、 Excel VBA の Union メソッドを使用したマクロを作成したいと思います。
Union メソッドは、複数のセル範囲を 1 つのセル範囲のようにまとめることのできるメソッドのようです。
離れた場所にあるセル範囲を結合して一括操作を行う事も出来ます。
ちなみに Union の英語の意味をインターネットの辞書で調べて見たところ、「連合」「結合」などの意味になるようです。
テスト用に以下の画像のワークシートを準備してみました。
赤枠で囲まれたセル範囲が 2 つありますね。セル範囲でいうと、 B3:C5 と E3:F5 になります。この 2 つの範囲を Union メソッドで処理してみたいと思います。
マクロの一例
Union メソッドを使用したマクロを作成してみました。
Union メソッドで 2 つのセル範囲を結合してアドレス情報を取得するマクロになっています。
Sub 複数のセル範囲をUnionメソッドでまとめてみるマクロ()
Dim a As Range
Set a = Union(Range("B3:C5"), Range("E3:F5"))
Debug.Print a.Address
Debug.Print a.Areas.Count
Debug.Print a.Areas.Item(1).Address
Debug.Print a.Areas.Item(2).Address
Set a = Nothing
End Sub
上のマクロを実行すると、 VBE のイミディエイトウィンドウに以下の内容が出力されました。
$B$3:$C$5,$E$3:$F$5
2
$B$3:$C$5
$E$3:$F$5
結果 1 行目の「$B$3:$C$5,$E$3:$F$5」は Union メソッドで結合されたセル範囲のアドレスの結果になります。 ,
(カンマ)区切りで 2 つのセル範囲が表現されていますね。
結果 2 行目の「2」は、結合済みのセル範囲に含まれるエリアの数をカウントした数字になっています。 2 つのエリアを結合したので「2」となっています。
結果 3 行目の「$B$3:$C$5」は、 1 つ目のエリアのアドレスを取得した結果になっています。
マクロの記述では、 Areas.Item(1).Address とした部分の結果になります。エリアのスタートの数字は Item( 0 )からではなく Item( 1 )から始まるようですね。
結果 4 行目の「$B$3:$C$5」は、 2 つ目のエリアのアドレスを取得した結果になっています。
一括操作
次は、 Union メソッドで結合済みのセル範囲に一括操作を行ってみたいと思います。
以下のマクロは、セルの背景色を一括で黄色に着色するマクロになっています。
Sub 複数のセル範囲をUnionメソッドでまとめてみるマクロ2()
Dim a As Range
Set a = Union(Range("B3:C5"), Range("E3:F5"))
a.Interior.ColorIndex = 6
Set a = Nothing
End Sub
上のマクロを実行すると以下の画像の結果になりました。
Union メソッドで結合されたセル範囲を一括で操作することができましたね。
カンマ区切り
Range プロパティにカンマ( , )区切りで複数の範囲を指定した場合のマクロも作成してみました。
以下のマクロの「Set a = Range("B3:C5,E3:F5")」の部分の記述です。 2 つのセル範囲をカンマ( , )で区切って記述しています。
Sub 複数のセル範囲をUnionメソッドでまとめてみるマクロ3()
Dim a As Range
Set a = Range("B3:C5,E3:F5")
Debug.Print a.Address
Debug.Print a.Areas.Count
Debug.Print a.Areas.Item(1).Address
Debug.Print a.Areas.Item(2).Address
Set a = Nothing
End Sub
上のマクロを実行すると、 VBE のイミディエイトウィンドウに以下の内容が出力されました。
$B$3:$C$5,$E$3:$F$5
2
$B$3:$C$5
$E$3:$F$5
Union メソッドを使用した際の結果は以下のものでした。同じ内容になっていますね。 Range プロパティにカンマ( , )区切り指定でも同様の事が行えたようです。
$B$3:$C$5,$E$3:$F$5
2
$B$3:$C$5
$E$3:$F$5
以上閲覧ありがとうございました。