Excel VBA不会在编译时捕获无效的属性

Excel / VBA编译器似乎不会在编译时捕获无效的属性。 这是一个简单的例子:

Option Explicit Sub CompileExample() Application.Calculzzzzzzzzation = xlCalculationAutomatic End Sub 

它会在运行过程中失败,但编译得很好。 通常这对我来说不会是一个问题,但我试图编译一些机器生成的代码,以显示错误而不执行它。 任何方式来强制编译器执行严格的检查?

Excel Application对象有很多late bound的方法。 其中许多是众所周知的,即那些工作表function。 因此,编译器无法在编译时检查和拒绝与Application对象相关的任何调用,例如Application.Calculzzzzzzzzation 。 这样一个在编译时不匹配的名字将留在最后绑定的运行时间。

因此,在使用Application对象时需要小心。 编译器不会检测到写错的方法名称; 运行时间会做。