2016-04-30 321 views
2

我試圖循環遍歷工作簿中的所有圖表。 爲什麼選項1工作,但選項2不是?使用VBA在工作簿中循環遍歷所有圖表

'OPTION 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

選項1列出了所有_embedded圖表(即包含在任何工作表中的圖表 - 請參閱[此處](https://msdn.microsoft.com/en-us/library/office/ff195149(v = office.15) .aspx)),而選項2列出所有_chart sheets_(請參見[here](https://msdn.microsoft.com/en-us/library/office/ff839597(v = office.15).aspx)) – user3598756

回答

7

有圖表兩種形式:

  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 
相關問題