Home » エクセルマクロ・Excel VBAの使い方 » Applicationオブジェクト » Unionメソッドの使い方

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「マクロ union 使い方」
「range 結合 union」
という検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。

Excel VBA(Visual Basic for Applications)の、ApplicationオブジェクトのUnionメソッドの使い方を、

Unionメソッドの使い方

調べていた方による検索でしょうか。

[スポンサードリンク]

Unionメソッドの動きを確認するサンプルマクロ

Application.Unionは、複数のRangeオブジェクトをまとめた、コレクションとしてのRangeを返すメソッドです。

まずは、Excelのワークシート上で、どのセルが選択されるかを確認しながら、以下のマクロをステップ実行してみてください。

Sub Unionの動きを確認する()
 Dim rng As Range

 Set rng = Range("B1")
 rng.Select

 Set rng = Union(rng, Range("A2:C3"))
 rng.Select
End Sub

まずB1セルが選択され、つづいてB1セルとA2:C3セルが選択された状態になります。

サンプルマクロをステップ実行したときの様子

最初の、
  Set rng = Range("B1")
  rng.Select
の部分では、オブジェクト変数・rngにB1セルを表すRangeオブジェクトがセットされているだけですから、B1セルだけが選択された状態になります。

つづく、
  Set rng = Union(rng, Range("A2:C3"))
の行が、この記事の本題である、Application.Unionメソッドを使っている箇所です。

引数には最低2つの、Rangeオブジェクトを指定します。
ここでは第1引数にオブジェクト変数・rngを、第2引数にB2:C3セルを表すRangeオブジェクトを取得する「Range("B2:C3")」というRangeプロパティを使ったオブジェクト式を指定しています。

UnionメソッドはRangeオブジェクトを返しますから、ここではSetキーワードを使ってオブジェクト変数・rngをセットしなおしています。

Unionメソッドは、複数のRangeオブジェクトをまとめたコレクションとしてのRangeを返しますから、
  Set rng = Union(rng, Range("A2:C3"))
が実行されると、オブジェクト変数・rngには、先にセットされていたB1セルと、B2:C3セルを表すRangeオブジェクトがセットされます。

ですからそのあとの、
  Select
が実行されると、B1セルとA2:C3セルが選択されます。

Unionメソッドの引数にはRangeオブジェクトを指定できる

Unionメソッドの引数には、Rangeオブジェクトを指定すればいいので、さまざまなオブジェクト式を引数に指定することができます。

以下のサンプルマクロも、Excelのワークシート上でどのセルが選択されるか確認しつつ、ステップ実行してみてください。

Sub Unionの動きを確認する2()
 Dim rng As Range

 Set rng = Range("B1")
 rng.Select

 Set rng = Union(rng, Range("A2:C3"))
 rng.Select

 Set rng = Union(rng, Cells(5, 5))
 rng.Select

 Set rng = Union(rng, Rows(7))
 rng.Select

 Set rng = Union(rng, Columns(9))
 rng.Select
End Sub

Cellsプロパティを使ったオブジェクト式も、
  Set rng = Union(rng, Cells(5, 5))

Rowsプロパティを使ったオブジェクト式も、
  Set rng = Union(rng, Rows(7))

Columnsプロパティを使ったオブジェクト式も、
  Set rng = Union(rng, Columns(9))

Unionメソッドの引数に指定できます。

もちろん、EndプロパティやOffsetプロパティやResizeプロパティも組み合わせられます。

Applicationプロパティは書かなくてもOK

「Application.Union」と、Applicationプロパティから記述しているコードを見かけることもありますが、オブジェクトブラウザーを調べればわかるとおりグローバルメンバーですから、

Unionメソッドの使い方

上位のオブジェクト式「Application.」は省略できます。

いきなり「Union」と書かれていると、一瞬VBAの関数かなと思ってしまうかもしれないので、必要のない「Application.」を書く気持ちもわからなくもないですが。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Applicationオブジェクト » Unionメソッドの使い方

「Applicationオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.