セル領域の操作−複数のセル領域(Areasプロパティ)|Excel VBA |
シート上の複数のセル領域を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オブジェクトというオブジェクトはありません。