使用VBA删除子ChartObjects

时间:2013-05-30 16:17:13

标签: excel vba excel-vba excel-2010

我无法弄清楚如何使用VBA删除图表。

起点:

  1. 创建空白工作簿
  2. 按三次F11以创建Chart1Chart2Chart3
  3. 右键点击Chart2,移动图表,对象:Chart 1
  4. 右键点击Chart3,移动图表,对象:Chart 1
  5. 哪些VBA代码会从Chart2删除所有图表(Chart3Chart1)?

    尝试:

    '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
    

1 个答案:

答案 0 :(得分: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

更新的代码:(由Steven提供)

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