录制的宏不适用于图表对象

时间:2013-05-17 14:48:41

标签: excel vba excel-vba excel-2007

我录制了以下宏:

Sheets("Rejets Techniques TGC").Select
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.Axes(xlCategory).Select
ActiveChart.SeriesCollection(1).Values = "='Données'!$EU$68:$IJ$68"
ActiveChart.SeriesCollection(1).XValues = "='Données'!$EU$1:$IJ$1"

然而,当我试图宣布它时,我得到了这个错误(翻译自法语):

Execution error '-2147024809 (80070057)'
There is no element with this name

这怎么可能?如果没有以这种方式命名的图形,我将无法做到 记录它。 (是的,我从好的表中运行它)

感谢。

2 个答案:

答案 0 :(得分:2)

以下是它的原因:您的图表不是 on 表格中的对象, 表格。

因此,当您使用ActiveSheet.ChartObjects("Graphique 1").Activate启动代码时,工作表中找不到ChartObjects,因为工作表是Chart。所以这就是你如何解决它:

Dim CO As Variant
Set CO = ActiveSheet
CO.Axes(xlCategory).Select
CO.SeriesCollection(1).Values = "='Données'!$ET$68:$IJ$68"
CO.SeriesCollection(1).XValues = "='Données'!$ET$1:$IJ$1"

这应该可以正常工作。我注意到当我查看图表标签时,我无法进入任何单元格。这不是异常,但它不是创建图表的最常见方式(我看到)。为了验证,我在ActiveSheet上添加了watch,并看到它确实是一个图表(类型为Object/Graph2),并且可以使用所有常规图表方法。

从那里开始,我只需插入您的代码,转换为CO变量(但您的代码仍然应该使用ActiveSheet)并且无错误地运行。


作为旁注,使用ActiveSheet并不总是有效,通常最好明确调用工作表,即Set CO = ThisWorkbook.Sheets("Rejets Techniques TGC")

答案 1 :(得分:0)

1 - 检查活动工作表是否是包含图表的工作表。或者使用代码中的工作表名称从任何工作表中运行它。

2 - 检查好表单是否包含具有完全“Graphique 1”名称的图表。也许有一个下划线,比如“Graphique_1”,或者没有空格“Graphique1”......