指定された範囲内の色付きセルの数をカウント(結合セル対応版)

Function fncCountColoredMergedCells(rngTarget As Range, Optional lngColor As Long = -1) As Long
    Dim rngCell As Range '対象となるセルを格納
    Dim lngCounter As Long '色付きセルのカウント数を格納
    Dim dicMerged As Object '結合セルを格納するための辞書
    
    Set dicMerged = CreateObject("Scripting.Dictionary")
    
    'カウンターを初期化
    lngCounter = 0
    
    '指定された範囲内でループ
    For Each rngCell In rngTarget
        '結合されたセルかどうかをチェック
        If rngCell.MergeCells Then
            '結合されたセルが既にカウントされていないか確認
            If Not dicMerged.Exists(rngCell.MergeArea.Address) Then
                dicMerged.Add rngCell.MergeArea.Address, True
                '色が指定されているか、任意の色が許可されている場合
                If rngCell.MergeArea.Interior.Color = lngColor Or lngColor = -1 Then
                    lngCounter = lngCounter + 1
                End If
            End If
        Else
            '色が指定されているか、任意の色が許可されている場合
            If rngCell.Interior.Color = lngColor Or lngColor = -1 Then
                lngCounter = lngCounter + 1
            End If
        End If
    Next rngCell
    
    'カウント数を返す
    fncCountColoredMergedCells = lngCounter
End Function