【发布时间】:2019-09-17 23:01:55
【问题描述】:
我刚刚开始使用 VBA 中的图表。该手册似乎直截了当:所有图表都包含在 Workbook.Charts 和/或(好吧,对于初学者来说不是很清楚,事实证明)Worksheets(x).ChartObjects。只是,我现在在我的工作簿中有一个图表,我在这两个集合中都找不到。
对象藏在哪里?
我正在运行一个 Little Marco,它应该根据我的定义设置所有图表的颜色。工作簿中有两个图表,位于不同的电子表格上。第二个(“消失”的那个)是瀑布类型。
- ?ThisWorkbook.Charts = 0。
- ?ThisWorkbook.Worksheets("Graph").ChartObjects.Count = 1
- ?ThisWorkbook.Worksheets("Charts").ChartObjects.Count = 0
前两个结果很好,第三个也应该是 1。
我怀疑任何代码都会有用 - 因为我可能只是在寻找错误的角落?
循环浏览工作簿中的所有图表的安全方法是什么?在图表对象中循环遍历每个工作表的图表并不能完成这项工作。
为什么我在工作表中找不到图表?这是瀑布的特产吗?
很抱歉,这似乎是一个非常基本的问题,我刚刚开始研究图表。
编辑:添加循环:
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:我确认此问题与图表类型(瀑布)有关。我删除了瀑布并使用了另一个 - 现在其他图表在上述集合中。删除那个并再次放入瀑布:在 ChartObjects 中找不到它...
PPS:我在堆栈溢出中发现了以下问题,现在我想知道它是否相关...:Error copying waterfall charts with Excel macro
【问题讨论】:
-
“我怀疑任何代码都会有用” - 它肯定会。循环遍历工作表,然后循环遍历每个工作表中的图表对象。
-
@TimWilliams 那么,请参阅上面的代码。但我真的认为我只是在寻找错误的地方 - 某些图表是否可能存储在其他地方?否则我看不出为什么上面的代码没有列出图表。
-
我在 Office 365 上,并且 ChartObjects.Count 返回带有插入瀑布图的预期值。您使用的是什么 Excel 版本/操作系统,您是如何插入“缺失”图表的?手动还是使用宏?
-
@TimWilliams 我在 Windows 7 Enterprise 上使用 Excel 2016。我手动添加了图表,而不是从脚本中添加。
-
将此
?ThisWorkbook.Charts更改为?ThisWorkbook.Charts.Count。我猜你只是打字太快了,但是...