セルが結合されているかどうかを判定する(MergeCells/MergeAreaプロパティ)|Excel VBA |
セルの結合/解除にはMergeメソッドとUnMergeメソッドを使います。
では任意のセルが「結合されているかどうか」を判断するにはどうしたらいいでしょう。
それには、RangeオブジェクトのMergeCellsプロパティを使います。
Sub Sample3()
Dim i As Long
Range("A3:A5").Merge
For i = 1 To 10
If Cells(i, 1).MergeCells Then
Cells(i, 2).Value = "結合されています"
End If
Next i
End Sub
MergeCellsプロパティは、そのセルが結合セルに含まれているときにTrueを返し、含まれていないときにはFalseを返します。
ただし、判定するセルが単一のセルではなく、セル範囲の場合、指定したセル範囲全体が、結合セルに含まれる場合のみ、MergeCellsプロパティはTrueを返します。
結合されているセル範囲は、RangeオブジェクトのMergeAreaプロパティで取得できます。
MergeAreaプロパティは読み取り専用のプロパティです。値を設定してセルを結合させることはできません。
次のサンプルを実行して結果を確認してください。
Sub Sample2()
Dim i As Long, msg As String
Range("A3:B5").Merge
For i = 1 To 10
If Cells(i, 1).MergeCells Then
With Cells(i, 1).MergeArea
msg = msg & "結合範囲:" & .Address & vbCrLf
msg = msg & "大きさ:" & .Count & vbCrLf
msg = msg & "行数:" & .Rows.Count & vbCrLf
msg = msg & "列数:" & .Columns.Count & vbCrLf
msg = msg & "左上セル:" & .Item(1).Address & vbCrLf
msg = msg & "右下セル:" & .Item(.Count).Address
End With
Exit For
End If
Next i
MsgBox msg
End Sub