HOME > 即効テクニック > Excel VBA > セル操作関連のテクニック > セルが結合されているかどうかを判定する(MergeCells/MergeAreaプロパティ)

セルが結合されているかどうかを判定する(MergeCells/MergeAreaプロパティ)|Excel VBA

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

セルが結合されているかどうかを判定する(MergeCells/MergeAreaプロパティ)

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

■結合されているかどうかを判定する

セルの結合/解除にはMergeメソッドとUnMergeメソッドを使います。
では任意のセルが「結合されているかどうか」を判断するにはどうしたらいいでしょう。
それには、RangeオブジェクトのMergeCellsプロパティを使います。

●サンプル1●

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プロパティは読み取り専用のプロパティです。値を設定してセルを結合させることはできません。
次のサンプルを実行して結果を確認してください。

●サンプル2●

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