2011-12-19 20 views
1
代码编译错误

我试图使用电子表格下面的代码,将在广泛的Excel版本的使用: -Excel 2002中VBA与更高版本的Excel

Sheets("Graph").ChartObjects("Chart 1").Activate 
ActiveChart.ClearToMatchStyle 

如果我包括这个代码是正常的,它不会在Excel 2002下编译,但在以后的版本中可以正常工作。我不认为.ClearToMatchStyle命令在Excel 2002中可用,并且这是它掉下来的地方。

有没有一种方法可以使用上面的代码,但只有在发现比2002版晚的Excel版本时才激活命令?

非常感谢您的帮助,

马丁

回答

2

你没有太多的选择,真的。

你得到的那个是对版本依赖的所有东西的后期绑定。
那就是:

Sheets("Graph").ChartObjects("Chart 1").Activate 

dim LateBoundChart As Object 
set LateBoundChart = ActiveChart 

on error resume next 
LateBoundChart.ClearToMatchStyle 
on error goto 0 

取而代之的on error resume next您可以:

  • 跳转到一个更有意义的错误处理程序。
  • 首先检查Excel版本,使用Application.Version

而且为了避免繁琐的dim whatever as Object,你可以有一个函数:

public function LateBound(byval o as object) as Object 
    set LateBound = o 
end function 

然后:

Sheets("Graph").ChartObjects("Chart 1").Activate 

on error resume next 
LateBound(ActiveChart).ClearToMatchStyle 
on error goto 0 
+0

这是知道非常有用,非常感谢您的帮助这个问题。 – Martin 2011-12-19 20:57:31

+0

感谢这些额外的信息,并花时间考虑事物的额外功能,我从这一个答案中学到了很多东西。非常感谢。 – Martin 2011-12-19 21:02:19