HOME > 即効テクニック > Excel VBA > セル操作関連のテクニック > セル領域の操作−複数のセル領域(Areasプロパティ)

セル領域の操作−複数のセル領域(Areasプロパティ)|Excel VBA

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

セル領域の操作−複数のセル領域(Areasプロパティ)

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

シート上の複数のセル領域をVBAで扱う場合、それぞれの領域を取得するにはRangeオブジェクトのAreasプロパティを使用します。

たとえば、セルA1:D3、F7:G11、I12:K17のような複数のセル領域の行数を数えるとき、

MsgBox Range("A1:D3,F7:G11,I12:K17").Rows.Count

上のようにすると、メッセージボックスには「3」と表示されます。
これは1つ目のセルA1:D3の行数で、3つのセル領域の行の合計は得られません。

このような場合にはAreasプロパティを利用して、それぞれのセル領域(Rangeオブジェクト)について行数、列数を取得する必要があります。
次のサンプルは、3つのセル領域の行数・列数の合計をメッセージボックスに表示します。

Sub Sample()
    Dim i As Long, cntRow As Long, cntCol As Long
    
    Range("A1:D3,F7:G11,I12:K17").Select
    With Selection
        For i = 1 To .Areas.Count
            cntRow = cntRow + .Areas(i).Rows.Count
            cntCol = cntCol + .Areas(i).Columns.Count
        Next i
    End With
    
    MsgBox "行 : " & cntRow & vbCrLf & "列 : " & cntCol
End Sub

●補足●

Areasコレクションには、選択範囲内のセル領域に対応するRangeオブジェクトが含まれます。Areaオブジェクトというオブジェクトはありません。