[Excel VBA]複数のセル範囲で重なっているセルを取得するIntersectと複数のセル範囲を取得するUnion(マクロ)

VBA(Excel)
この記事は約2分で読めます。
記事内に広告が含まれていることがあります。

概要

こんにちは。

最近、指を怪我して手術して病みそうなあおいです。

 

今回はExcel VBAのメソッドであるIntersectメソッドとUnionメソッドを紹介します。

この2つのメソッド似てるようで違うものであり、

イメージとしては、IntersectがAnd条件(共通部分)でUnionメソッドがOr条件(和集合)と考えます。

Intersect ⇒ A∩B(共通部分)
Union ⇒ A∪B(和集合)

この2つのメソッドは共にRange型を返します。

 

Intersect メソッド

まずはIntersectについて。

Excelのセル範囲とセル範囲が重なっている範囲(部分)のみRange型で取得したいときに使います。

重なり合っている部分のみ返すので、いわゆる共通部分にあたります。

 

例1)印刷範囲と使ってるセル範囲が重なっている部分を取得

例1では印刷範囲に絞った使っているセル範囲を返しています。

 

他にも使える例を出します。

 

例2)シートのセルを編集したときに動くイベント処理(Changeイベント)で、編集したセルが印刷範囲に含まれるか判断し、外れていた場合は編集前の値に戻す

印刷範囲以外で編集されたくない場合に使えます。

 

Union メソッド

次にUnionメソッドについて説明します。

指定した複数のセル範囲をすべてRange型で取得したい場合はUnionメソッドを利用します。

すべての範囲を返すので、いわゆる和集合に当たります。

 

例3)複数のセル範囲を選択する

⇒結果 Rng.Address A2:B5

複数のセル範囲で同じ作業をしたい場合に使えるメソッドだと思います。

 

いかがだったでしょうか?

わからない部分があれば連絡ください。

今回はここまで。

ノシ

---コメント---

タイトルとURLをコピーしました