无法在Excel 2010中使用VBA删除图表系列

时间:2011-12-05 04:03:09

标签: excel-vba vba excel

我有一个用Excel 2003编写的VBA宏,它在Excel 2003和2007中运行得非常好。但是,它在Excel 2010中失败了,我不知道为什么。

宏在用户添加或删除数据后更新图表中的系列。第一步(在数据验证之后)是删除图表中除第一个系列之外的所有系列。

'clear all chart series except for series 1
Do While theChart.SeriesCollection.Count > 1
    theChart.SeriesCollection(2).Delete
Loop

执行在循环的第一次迭代中停止,错误对话框“对象'系列'的方法'删除'失败。”

我想也许对象模型在Excel 2010中已经改变了,所以我使用宏录制器来记录删除系列的动作:

ActiveSheet.ChartObjects("Plant Feed").Activate
ActiveChart.SeriesCollection(3).Select
Selection.Delete

运行录制的宏(系列3明显重新设置)在第二行停止,“方法'选择'对象'系列'失败。”

然后我添加了一个对象变量和一些msgbox行来尝试调试问题:

Dim theSeries As Series
ActiveSheet.ChartObjects("Plant Feed").Activate
MsgBox (ActiveChart.SeriesCollection(3).Name)
Set theSeries = ActiveChart.SeriesCollection(3)
MsgBox (theSeries.Name)
theSeries.Delete

对象变量设置正确,消息框给出了正确的输出,但它仍然落在了Series.delete上。

最后,我使用在Excel 2010中创建的全新图表重复了上述所有内容,以防万一这是2003年的遗留问题,但我也遇到了同样的错误。

我正在撕扯我的头发。我在网上搜索无效的解决方案,这就是导致我进入Stack Overflow网站的原因。我很感激任何人都可以提供的任何帮助。

此致

的Darren

2 个答案:

答案 0 :(得分:0)

您是否尝试过这种方式?

For x = theChart.SeriesCollection.Count To 2 Step -1
   theChart.SeriesCollection(x).Delete
Next x

答案 1 :(得分:0)

从集合的开头删除项目,总会有第一个元素,直到你全部删除它们。

Do While theChart.SeriesCollection.Count > 1
     theChart.SeriesCollection(1).Delete   
     'theChart.SeriesCollection(2).Delete    
Loop