「cellsプロパティ 複数セルの選択」
「エクセル cellsプロパティ 複数 vba」
といった検索キーワードでのアクセスがあることに気づきました。
Cellsプロパティを使って、複数のセルを取得・選択するExcel VBAのコードを探していた方による検索です。
Cellsプロパティで取得できるのは全部か1個のRangeオブジェクト
そもそもCellsは、引数を指定できるような作りにはなっておらず、
「Cells」の直前にオブジェクト式が何も書かれていなければ、ワークシート上のすべてのセルを表すRangeオブジェクトを返すプロパティです。
Rangeオブジェクトの既定のプロパティ(_Default)や、Itemプロパティに、
1つまたは2つの引数を指定することで、1個のセルを表すRangeオブジェクトを取得できるようになっています。
ですからCellsプロパティだけで、(全部ではない)複数のセルを表すRangeオブジェクトを取得することは不可能で、他のプロパティやメソッドを利用する必要があります。
Cellsプロパティで2つのセルを取得・選択するサンプルマクロ
具体的には、ApplicationオブジェクトのUnionメソッドを利用すると、Cellsプロパティを使って複数のセルを表すRangeオブジェクトを取得・選択できます。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個まで引数を指定できますけれど、
たくさんの引数をダラダラ指定するよりも、オブジェクト変数を使って以下のような形にしておくほうが可読性は上がるでしょう。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メソッド