2013-05-30 221 views
1

我無法弄清楚如何使用VBA刪除圖表。使用VBA刪除子ChartObjects

起點:

  1. 創建空白工作簿
  2. 按F11三次創造Chart1Chart2Chart3
  3. Chart2單擊鼠標右鍵,移動圖表,對象在:Chart 1
  4. 右鍵點擊Chart3,移動圖表,對象在:Chart 1

什麼VBA代碼將從Chart1刪除所有圖表(Chart2Chart3)?

嘗試:

'Try 1: Run-time error -2147024809 (80070057): 
'  The specified value is out of range. 
Sheets("Chart1").ChartObjects.Delete 

'Try 2: (Same error) 
Charts("Chart1").ChartObjects.Delete 

回答

2

看來你不能刪除圖表。原因是圖表被鎖定,無法從VBA和應用程序解鎖圖表。

我發現的唯一解決方法是:1.將其移至任何工作表,2.將其刪除。

可能的代碼可能如下:

Dim myCHART As Chart 
Set myCHART = Sheets("Chart1") 


myCHART.ChartObjects(1).Select 
ActiveChart.Location Where:=xlLocationAsObject, Name:=Worksheets(1).Name 
Worksheets(1).Shapes(Worksheets(1).Shapes.Count).Delete 

更新後的代碼(由史蒂芬)

Do While Charts("Chart1").ChartObjects.Count > 0 
    Charts("Chart1").ChartObjects(1).Chart.Location xlLocationAsObject, _ 
                Worksheets(1).Name 
    Worksheets(1).Shapes(Worksheets(1).Shapes.Count).Delete 
Loop 
+0

至於建議,我會刪除'Chart'它移動到另一個'Worksheet'。我編輯了你的答案,包括我的代碼示例(根據你的建議)。謝謝! – Steven