Excel VBA不会在编译时捕获无效的属性
Excel / VBA编译器似乎不会在编译时捕获无效的属性。 这是一个简单的例子:
Option Explicit Sub CompileExample() Application.Calculzzzzzzzzation = xlCalculationAutomatic End Sub
它会在运行过程中失败,但编译得很好。 通常这对我来说不会是一个问题,但我试图编译一些机器生成的代码,以显示错误而不执行它。 任何方式来强制编译器执行严格的检查?
Excel Application
对象有很多late bound
的方法。 其中许多是众所周知的,即那些工作表function。 因此,编译器无法在编译时检查和拒绝与Application
对象相关的任何调用,例如Application.Calculzzzzzzzzation
。 这样一个在编译时不匹配的名字将留在最后绑定的运行时间。
因此,在使用Application
对象时需要小心。 编译器不会检测到写错的方法名称; 运行时间会做。