在VBA中,有没有一种方法可以知道未使用的变量?

20

在标准的VBA编辑器中,是否有工具、方法或设置可以警告已经被Dim的变量但未被使用?


5
我认为这个问题不应该被搁置;关闭的原因是“[问题]要求我们推荐……工具……或其他离线资源”。实际上,这个问题针对的是 MS-Excel 内置编辑器(VBE)中的工具,而不是要求第三方工具或离线资源。虽然一些答案中提供的选项依赖于第三方工具,但我不认为这必然使它们成为“主观的答案”或“垃圾邮件”。事实上,我给出的一个答案可以直接在 VBE 中运行,不需要任何额外的工具。 - Greedo
1
这是一个非常好的问题。请重新打开它。 - Excel Hero
@ExcelHero,暂时完成了。这个问题不是关于寻找工具的,即使那可能是最好的答案。我希望能够找到一种内部VBA编辑器的方法。 - Lance Roberts
我希望有一种方法。你总是可以使用编辑菜单中的查找功能。事实上,我经常这样做。但这肯定不是最好的方法。 - Excel Hero
2个回答

21

MZ-Tools将搜索您的代码并告诉您哪些内容未被使用。适用于VBA的版本可以在这里找到。

MZ-Tools中执行您所询问的操作的具体功能是Review Source Code

Review Source Code功能允许您审查源代码以检测一些未使用的声明(常量、变量、参数、过程等)。


2
是的:它是免费的,易于使用,并且非常高效。一旦您注意到使用它可以节省多少时间,请像我一样捐赠! - Philippe Grondier
2
很遗憾,不再免费 - https://www.mztools.com/v8/purchase.aspx - Darren Bartrup-Cook
1
版本8是“免费30天试用”(带有提示),但我不建议使用。在“审核质量”操作中,“死代码审核”选项确实会检查未使用的变量和过程,但也会返回垃圾(就像其他审核检查一样)。也许有些人想知道在哪里放置注释以及如何大写他们的变量和过程名称,但我发现这有点烦人,特别是考虑到从未见过它坚持的这些命名约定。 - ashleedawg

13
另一种方法(因为我没有管理员权限来安装该软件)是在模块顶部添加Option Explicit,然后注释掉所有Dim声明的变量,并使用F8调试代码或使用Alt+d+l重新编译代码。
逐个取消对Dim的注释,直到Option Explicit不再返回编译器错误,此时仍然被注释的任何变量都可以被忽略,因为它们在您的代码中没有用到。

类似于MZ-Tools,RubberDuck有一个VariableNotUsed Inspection(以及许多其他功能),应该可以精确显示您想要的内容。它是免费的,并且在v2.2.0.3086及以上版本中支持非管理员安装。

愚蠢简单,但实用的解决方案,在许多情况下都应该有效(+1)。 - Fredrik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接