簡體   English   中英

使用 VBA 遍歷工作簿中的所有圖表

[英]Loop through all charts in a workbook with VBA

我正在嘗試遍歷工作簿中的所有圖表。 為什么選項 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

有兩種風格的圖表:

  1. “大”圖表 - 整個圖表表
  2. “小”圖表 - 嵌入在工作表中的圖表對象

這段代碼:

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 列表中的圖表。

正如 文檔所述Application.Charts返回一個包含所有圖表表(不是圖表!)的Sheets集合。 但是,對於Worksheet.ChartObjects文檔說它返回一個ChartObjects集合,其中包含該工作表上的所有圖表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM