excel - 尽管插入了图表对象,但找不到图表对象
问题描述
我刚刚开始使用 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:我在堆栈溢出中发现了以下问题,现在我想知道它是否相关......:使用 Excel 宏复制瀑布图时出错
解决方案
嘿,请找到我关于循环图表的提议。
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
推荐阅读
- eloquent - 如何使用 eloquent 将“find(id)”与 leftJoin 结合起来
- python - 带有张量流后端的keras:使用batch_size时的层实现,但在图形构建期间它是None
- android - 当我们专注于输入然后它显示在软键盘(WebView)的上方时,有没有办法?
- c++ - 使用链表 (C++) 的分段故障队列
- android - 引起:com.android.dex.DexException:多个dex文件定义Landroid/arch/core/internal/SafeIterableMap$ListIterator;
- python - 具有更改签名的安全 HMAC 授权
- r - 在 R markdown 中包裹长 url 行
- python - 删除列表中包含的 numpy 行?
- excel - Excel:下一个单元格值
- kendo-ui - Kendo Grid 自定义工具栏按钮启用/禁用