HOME > 即効テクニック > Excel VBA > セル操作関連のテクニック > セル領域の操作−セル領域の集合とRange

セル領域の操作−セル領域の集合とRange|Excel VBA

セル操作関連のテクニック

セル領域の操作−セル領域の集合とRange

(Excel 97/2000/2002/2003/2007/2010)

複数のセル領域を取得する方法、複数のセル領域から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