我正在尝试遍历工作簿中的所有图表。
为什么选项 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
    

    关于excel - 使用 VBA 遍历工作簿中的所有图表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36955925/

    10-10 16:21