2013-05-30 213 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