我想知道在没有编译/运行时错误的情况下,是否有任何方法可以识别所有损坏的vba代码(例如:变量)?
例如:
假设在ModuleA.bas中有一个变量定义为:
Public Const REG_SZ AS Long = 1
其他文件(例如ModuleB.bas,ModuleC.bas等)都使用此变量。
现在,如果我们删除包含变量REG_SZ的ModuleA.bas文件并构建项目,则看不到编译或运行时错误。 只有在调试时,您才知道程序默认将此变量设置为没有值。当您在其他模块中右键单击该变量并单击“定义”时,会出现错误消息:“无法识别光标下的标识符”。解决方案是在每个文件中本地声明此变量,或者重新-将原始ModuleA.bas文件声明为已声明的变量。
我想知道在没有编译/运行时错误的情况下,是否有任何方法可以识别所有损坏的vba代码(例如:变量)?
答案 0 :(得分:2)
要回答有关变量的特定问题,请执行以下操作:在每个代码模块的顶部放置一个file_get_contents()
语句。您插入的任何未声明其变量的VBA代码都将被自动标记,而无需编译该代码。
答案 1 :(得分:2)
VBE选项对话框的[编辑器]选项卡中有一个标记为“需要变量声明”的设置,它将自动向每个模块添加Option Explicit
:
模块的声明部分中包含Option Explicit
,使得VBA拒绝编译/运行使用未声明变量的项目。
Visual Basic编辑器(VBE)并不能提供更多帮助,但是VBE加载项(例如Rubberduck)可以进一步推动静态代码分析-例如,当{{1}出现时,它可以警告您}从模块中丢失,如果从未分配变量或未使用过程,则分配是冗余的或在使用其值之前被覆盖,如果Option Explicit
函数被滥用,...并且如此之多(从v2.3版开始实施了大约80项检查,计划于11月25日发布):
免责声明:我管理这个开源项目。