セル領域の操作−セル領域の集合とRange|Excel VBA |
複数のセル領域を取得する方法、複数のセル領域から1つの大きなセル領域を取得する方法について紹介します。
書式設定を行う際など、複数のセル領域をまとめて処理したい場合には、Unionメソッドを用い、セル領域の集合に対して処理を行います。
次のサンプルは複数のセル領域の集合を取得し、そのアドレスを表示します。
Sub GetUnitedRange()
Dim Rng1 As Range, Rng2 As Range, Rng3 As Range
Set Rng1 = Range("A1:D5")
Set Rng2 = Range("F7:G11")
Set Rng3 = Range("I12:K17")
Union(Rng1, Rng2, Rng3).Select
MsgBox Selection.Address
End Sub
実行すると、メッセージボックスには「$A$1:$D$5,$F$7:$G$11,$I$12:$K$17」と表示されます。
セルの集合ではなく、1つの四角いセル領域を取得するときはRangeプロパティを使用します。Rangeプロパティの2つの引数にセル領域を指定することで、第1引数に指定したセル領域の左上端セルから、第2引数に指定したセル領域の右下端までのセル領域を取得できます。
(セル領域を指定する基本的な方法) Range(セル1, セル2) ※セル1、セル2は単一のセル、もしくはセル領域
セル1、セル2に単一セルを指定する場合、次のコードはセル領域A1:E5を取得します。
Range(Cells(1,1), Cells(5,5))
上のサンプルの場合、次のコードは第1引数に指定したセル領域の左上端セル(A1)から、第2引数に指定したセル領域の右下端(K17)までのセル領域A1:K17のアドレスを表示します。
Range(Rng1, Rng3).Select
MsgBox Selection.Address
また、選択範囲内に複数のセル領域がある場合は、Areasプロパティを利用できます。
複数のセル領域の最初と最後のAreaをRangeプロパティの引数に指定することで、選択範囲の左上端から右下端までのセル領域を取得します。
上のサンプルの場合、次のコードもセル領域A1:K17のアドレスを表示します。
With Selection
Range(.Areas(1), .Areas(.Areas.Count)).Select
MsgBox Selection.Address
End With