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,请先检查。。。现在我在开车。