【VBA】複数のセル範囲を結合して一括操作する方法|Union関数の使い方

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 など書式処理も一括可能

複数のセル範囲を結合して一括処理することで、記述の簡潔化・処理の高速化・メンテナンス性の向上が期待できます。
帳票処理や複数の対象領域への同一処理など、実務での活用場面も多いため、ぜひ覚えておきたいテクニックです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次