我试图遍历工作簿中的所有图表。 为什么选项1工作,但选项2不工作?
'选项1
For Each sht In ActiveWorkbook.Worksheets
For Each cht In sht.ChartObjects
MsgBox (cht.Name)
Next cht
Next sht
' OPTION2
Dim oChart As Chart
For Each oChart In Application.Charts
MsgBox (oChart.Name)
Next oChart
End Sub
答案 0 :(得分:10)
有两种图表:
此代码:
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
答案 1 :(得分:0)
作为the documentation states,Application.Charts
会返回包含所有图表(不是图表!)的Sheets
集合。但是,对于Worksheet.ChartObjects
,the documentation says它会返回包含该表上所有图表的ChartObjects
集合。