Loop through all charts in a workbook with VBA

后端 未结 2 1843
北恋
北恋 2021-01-06 07:14

I am trying to loop through all charts in a workbook. Why is option 1 working, but option 2 not?

\'OPTION 1

For Each sht In ActiveWorkbook.Worksheets         


        
相关标签:
2条回答
  • 2021-01-06 07:52

    As the documentation states, Application.Charts returns a Sheets collection containg all chart sheets (not charts!). For Worksheet.ChartObjects, however, the documentation says that it returns a ChartObjects collection containing all charts on that sheet.

    0 讨论(0)
  • 2021-01-06 07:58

    There are two flavors of charts:

    1. "big" charts - an entire chart sheet
    2. "little" charts - chart objects embedded in a worksheet

    This code:

    Sub dural()
        Dim oChart As Chart
        For Each oChart In Application.Charts
            MsgBox oChart.Parent.Name & vbCrLf & oChart.Name
        Next oChart
    End Sub
    

    will display information about the "big" variety.

    and if you want information on the "little" charts:

    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
    
    0 讨论(0)
提交回复
热议问题