Home » Excel VBA Rangeオブジェクト » Cellsプロパティ » Cellsプロパティで複数セルを取得・選択する-Unionメソッド

Cellsプロパティで複数セルを取得・選択する-Unionメソッド

対象:Excel2010, Excel2013, Windows版Excel2016

「cellsプロパティ 複数セルの選択」
「エクセル cellsプロパティ 複数 vba」
といった検索キーワードでのアクセスがあることに気づきました。

Cellsプロパティを使って、複数のセルを取得・選択するExcel VBAのコードを探していた方による検索です。

Cellsプロパティで取得できるのは全部か1個のRangeオブジェクト

そもそもCellsは、引数を指定できるような作りにはなっておらず、

excel-vba-get-multiple-cells-range-object-by-cells-property

「Cells」の直前にオブジェクト式が何も書かれていなければ、ワークシート上のすべてのセルを表すRangeオブジェクトを返すプロパティです。

[スポンサードリンク]

Rangeオブジェクトの既定のプロパティ(_Default)や、Itemプロパティに、

excel-vba-get-multiple-cells-range-object-by-cells-property

1つまたは2つの引数を指定することで、1個のセルを表すRangeオブジェクトを取得できるようになっています。

ですからCellsプロパティだけで、(全部ではない)複数のセルを表すRangeオブジェクトを取得することは不可能で、他のプロパティやメソッドを利用する必要があります。

Cellsプロパティで2つのセルを取得・選択するサンプルマクロ

具体的には、ApplicationオブジェクトのUnionメソッドを利用すると、Cellsプロパティを使って複数のセルを表すRangeオブジェクトを取得・選択できます。
Sub Cellsプロパティで複数セルを取得し選択する1()
 Dim rng As Range
 Set rng = Union(Cells(1, "A"), Cells(3, "C"))
 rng.Select
End Sub

上記のSubプロシージャを実行すると、A1セルとC3セルを選択できます。

単純に、A1セルとC3セルを選択するだけなら、
  Union(Cells(1, "A"), Cells(3, "C")).Select
という1行だけでもOKです。

Cellsプロパティで複数のセルを取得・選択するサンプルマクロ

Application.Unionメソッドには30個まで引数を指定できますけれど、

excel-vba-get-multiple-cells-range-object-by-cells-property

たくさんの引数をダラダラ指定するよりも、オブジェクト変数を使って以下のような形にしておくほうが可読性は上がるでしょう。
Sub Cellsプロパティで複数セルを取得し選択する2()
 Dim rng As Range
 Set rng = Cells(1, "A")
 Set rng = Union(rng, Cells(3, "C"))
 Set rng = Union(rng, Cells(5, "E"))
 rng.Select
End Sub

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » Cellsプロパティ » Cellsプロパティで複数セルを取得・選択する-Unionメソッド

「Cellsプロパティ」の記事一覧

検索


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

.