【发布时间】:2012-01-12 22:21:21
【问题描述】:
我有一个用 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
运行录制的宏(显然已恢复 Series 3)在第二行停止,并显示“方法 'select' of object 'series' failed。”
然后我添加了一个对象变量和一些 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
对象变量设置正确,消息框给出正确的输出,但仍然落在 theSeries.delete 上。
最后,我使用 Excel 2010 中创建的全新图表重复上述所有操作,以防万一这是 2003 年的遗留问题,但我遇到了同样的错误。
我在扯头发。我在网上搜索了无济于事的解决方案,这就是导致我访问这个 Stack Overflow 网站的原因。任何人都可以提供任何帮助,我将不胜感激。
问候,
达伦
【问题讨论】:
-
+1 详细说明您到目前为止所采取的步骤。问题:有机会保护工作表吗?
-
谢谢瑞秋。我希望是这样,即使我会觉得有点傻。自从我发帖以来,我又确定了一件事,这让我觉得这是某种 2003 年的遗产。如果我在新工作簿中创建新图表,我不会遇到问题。但是现有工作簿中的新图表不起作用,即使我先删除所有其他图表和 VBA 模块。我想我将不得不从头开始重新创建整个工作簿。
-
Rachel 的 +1 没有用,但你应得的。顺便说一句,您可以尝试在引发错误的行上设置断点并查看
theChart.SeriesCollection(2)对象并检查它是什么