我正在尝试循环遍历工作簿中的所有图表。 为什么选项 1 有效,但选项 2 无效?
'选项1
For Each sht In ActiveWorkbook.Worksheets
For Each cht In sht.ChartObjects
MsgBox (cht.Name)
Next cht
Next sht
'选项2
Dim oChart As Chart
For Each oChart In Application.Charts
MsgBox (oChart.Name)
Next oChart
End Sub
最佳答案
图表有两种风格:
- “大”图表 - 整个图表表
- “小”图表 - 嵌入工作表中的图表对象
这段代码:
Sub dural()
Dim oChart As Chart
For Each oChart In Application.Charts
MsgBox oChart.Parent.Name & vbCrLf & oChart.Name
Next oChart
End Sub
将显示有关“大”品种的信息。
如果您想了解“小”图表的信息:
Sub dural2()
Dim sh As Worksheet, i As Long
For Each sh In Worksheets
If sh.ChartObjects.Count > 0 Then
For i = 1 To sh.ChartObjects.Count
MsgBox sh.ChartObjects(i).Chart.Name
Next i
End If
Next sh
End Sub
请注意,我们需要一个显式的 If
语句来处理没有图表的工作表,并且 .Chart
用于访问每个 ChartObjects 列表中的图表。
关于excel - 使用 VBA 循环遍历工作簿中的所有图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36955925/