我刚刚开始使用VBA中的图表。该手册似乎很简单:所有图表都包含在Workbook.Chart中和/或(事实证明,对于初学者来说还不是很清楚)Worksheets(x).ChartObjects。只是,我的工作簿中现在有一个图,在任何一个集合中都找不到。
对象隐藏在哪里?
我正在运行Little Marco,它应该根据我的定义设置所有图的颜色。工作簿中有两个图表,位于不同的电子表格上。第二个(“消失”的)是瀑布类型。
前两个结果很好,第三个结果也应该是1。
我怀疑任何代码是否有用-因为我可能只是在错误的角落找东西?
在工作簿中循环浏览所有图表的安全方法是什么?在chartobjects中循环遍历每个工作表的Charts并不能完成工作。
为什么在工作表中找不到图表?这是瀑布的特色吗?
很抱歉,如果这看起来像是一个非常基本的问题,那么我只是进入图表。
编辑:添加了循环:
Public Sub hrFormatAllCharts()
Debug.Print ("hrFormatAllCharts: Enter")
Dim ws As Worksheet
Dim cht As ChartObject
For Each ws In ThisWorkbook.Worksheets
Debug.Print ("Charts in worksheet " & ws.Name & " : " & ws.ChartObjects.Count & ".")
For Each cht In ws.ChartObjects
Call hrFormatChart(cht.Chart)
Next cht
Next ws
Debug.Print ("hrFormatAllCharts: Exit")
End Sub
加分点问题:既然我可以看到图表,有没有一种方法可以通过GUI询问对象“你住在哪里?”
PS:我确认此问题与图表类型(瀑布)有关。我删除了瀑布并使用了另一个-现在上面的集合中有另一个Chart。删除其中一个并再次放入瀑布:在ChartObjects中找不到它...
PPS:我在堆栈溢出中发现了以下问题,现在我想知道它是否与...有关:Error copying waterfall charts with Excel macro
答案 0 :(得分:0)
嘿,请找出我的遍历图表的提议。
Sub LoopThroughCharts()
Dim charts As ChartObjects
Dim chart As ChartObject
Dim sheetIterator As Integer
Dim loopSheet As Worksheet
For sheetIterator = 1 To ThisWorkbook.Worksheets.Count()
Set loopSheet = ThisWorkbook.Worksheets(sheetIterator)
Debug.Print loopSheet.Name
Set charts = loopSheet.ChartObjects
For Each chart In charts
Debug.Print chart.Name
Next chart
Next sheetIterator
End Sub