Excel VBA 图表计数和格式化

Excel VBA Chart counting and formatting

我想创建一个宏来计算给定范围内的图表数量,然后根据计数的数量执行某些操作。我知道 activesheet.chartobjects.count 会在整个 sheet 中计数,我该如何修改以在一个范围内计数?

这是我的代码的框架。

Sub chrt_chck()
    Dim rng As Range
    Dim x As Long
    Set rng = Range("A1:F10")
    x = ActiveSheet.rng.ChartObjects.Count
    
    If x > 1 Then
    'select and delete all charts in range
    End If
    
    If x = 1 Then
    'select that chart and update format
    Else
    'create chart and set format
    End If
End Sub

请尝试下一种方式:

Sub chrt_chck()
    Dim rng As Range, chO As ChartObject, x As Long, arrChO() As ChartObject, k As Long, El
    
    Set rng = Range("B2:D15") ' Range("A1:F10")
    ReDim arrChO(ActiveSheet.ChartObjects.count - 1)
    For Each chO In ActiveSheet.ChartObjects
        If Not Intersect(chO.TopLeftCell, rng) Is Nothing Then
            x = x + 1
            Set arrChO(k) = chO: k = k + 1
        End If
    Next
    
    If x > 1 Then
    'select and delete all charts in range
        For Each El In arrChO
            Debug.Print El.name
            El.Delete
        Next
    End If
    
    If x = 1 Then
    'select that chart and update format
         With arrChO(0)
            .Select
            Debug.Print .name
            'do wahtever needed with the chart...
         End With
    Else
    'create chart and set format
    End If
End Sub

它计算左上角在 rng 范围内的所有图表对象。