概要
こんにちは。
最近、指を怪我して手術して病みそうなあおいです。
今回はExcel VBAのメソッドであるIntersectメソッドとUnionメソッドを紹介します。
この2つのメソッド似てるようで違うものであり、
イメージとしては、IntersectがAnd条件(共通部分)でUnionメソッドがOr条件(和集合)と考えます。
この2つのメソッドは共にRange型を返します。
Intersect メソッド
まずはIntersectについて。
Excelのセル範囲とセル範囲が重なっている範囲(部分)のみRange型で取得したいときに使います。
重なり合っている部分のみ返すので、いわゆる共通部分にあたります。
例1)印刷範囲と使ってるセル範囲が重なっている部分を取得
1 |
Set Rng = Excel.Application.Intersect(Range("Print_Area"), UsedRange) |
例1では印刷範囲に絞った使っているセル範囲を返しています。
他にも使える例を出します。
例2)シートのセルを編集したときに動くイベント処理(Changeイベント)で、編集したセルが印刷範囲に含まれるか判断し、外れていた場合は編集前の値に戻す
1 2 3 4 5 |
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("Print_Area")) Is Nothing Then Application.Undo End Sub |
印刷範囲以外で編集されたくない場合に使えます。
Union メソッド
次にUnionメソッドについて説明します。
指定した複数のセル範囲をすべてRange型で取得したい場合はUnionメソッドを利用します。
すべての範囲を返すので、いわゆる和集合に当たります。
例3)複数のセル範囲を選択する
1 |
Set Rng = Excel.Application.Union(Range("A2:A5"), Range("B2:B5")) |
⇒結果 Rng.Address A2:B5
複数のセル範囲で同じ作業をしたい場合に使えるメソッドだと思います。
いかがだったでしょうか?
わからない部分があれば連絡ください。
今回はここまで。
ノシ
---コメント---