VBAを使って複数のセル範囲に対して同じ処理を一度に行いたいとき、個別に繰り返すのは手間がかかります。
このような場面では、Union
関数を使って複数のセル範囲を一つの集合として扱うことで、より簡潔に効率的な処理が可能になります。
本記事では、異なる場所にあるセル範囲を一つにまとめて処理する方法を、実践的なコードとともにわかりやすく解説いたします。
目次
コード例:複数のセル範囲を結合して選択・確認
Dim combinedRange As Range
Set combinedRange = Union(Range("B3:E8"), Rows("4:6"), Columns("F:H"))
combinedRange.Select
MsgBox "結合されたセル範囲:" & combinedRange.Address
コードの解説
1. Union
関数とは?
Union(範囲1, 範囲2, 範囲3, ...)
のように記述し、複数のセル範囲を結合した集合を作成します。- 結合された範囲は
Range
オブジェクトとして扱えます。
2. このコードの範囲指定について
Range("B3:E8")
:範囲1(表形式の領域など)Rows("4:6")
:範囲2(3行をまとめて対象)Columns("F:H")
:範囲3(列単位で一括処理)
3. 操作内容
.Select
:結合されたすべてのセル範囲を選択します。.Address
:選択された複数範囲のアドレスを表示します(例:$B$3:$E$8,$4:$6,$F:$H
)。
使用例:一括で書式を適用したい場合
結合された範囲に対して、色や書式を一括適用することも可能です。
combinedRange.Interior.Color = RGB(255, 255, 200) '背景色を薄黄色に設定
combinedRange.Font.Bold = True '文字を太字に設定
注意点
Union
で指定するすべての範囲は、同じワークシート上に存在している必要があります。- 異なるシートにまたがる範囲を結合しようとすると、エラーになります。
まとめ
処理内容 | 使用コード | 説明 |
---|---|---|
複数範囲の結合 | Union(Range(...), Rows(...), Columns(...)) | 一つのRangeとして扱える |
範囲の選択 | .Select | 結合された範囲すべてを選択 |
アドレスの表示 | .Address | 範囲情報を文字列で取得 |
一括書式設定 | .Font , .Interior , .Borders など | 書式処理も一括可能 |
複数のセル範囲を結合して一括処理することで、記述の簡潔化・処理の高速化・メンテナンス性の向上が期待できます。
帳票処理や複数の対象領域への同一処理など、実務での活用場面も多いため、ぜひ覚えておきたいテクニックです。