Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA图表计数和格式_Excel_Vba_Charts_Counting - Fatal编程技术网

Excel VBA图表计数和格式

Excel VBA图表计数和格式,excel,vba,charts,counting,Excel,Vba,Charts,Counting,我想创建一个宏来统计给定范围内的图表数量,然后根据统计的数量执行某些操作。我知道activesheet.chartobjects.count将在整个工作表中计数,我将如何修改以在一定范围内计数 这是我的代码的框架 Sub chrt_chck() Dim rng As Range Dim x As Long Set rng = Range("A1:F10") x = ActiveSheet.rng.ChartObjects.Count

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

这是我的代码的框架

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
范围内的所有图表对象。

为什么同时定义x和k?k对我来说似乎没有必要。不管代码是否有效。@Elis:
arrChO
是一个从零开始的数组,并且
x
必须对图表进行计数。。。K最初是0。我可以在这里使用
X-1
,但我习惯于使用一个单独的变量。有时,在条件迭代中,如果有必要,可以在最后使用一些易于检查的内容,而不会被迭代变量弄糊涂。我可以说,这是习惯的问题。。。一个好习惯,我(仍然)敢相信……:)我还可以将数组
1声明为ActiveSheet.ChartObjects.count
。但我的经验让我使用了我正在使用的解决方案。小修正:当工作表中没有图表时,
arrChO(ActiveSheet.ChartObjects.count-1)
计算为
arrChO(-1)
,并抛出一个错误,因此我在IF语句中缩进了
Redim
for
循环,这取决于
ActiveSheet.ChartObjects.count的值。如果count>0,请先检查。。。现在我在开车。