Excel 2016 Option Explicit 无法检测未声明的变量

dmh*_*hzx 2 excel vba excel-2016

所有工作表和所有模块的顶部都有明确的选项。

需要变量声明被勾选

我只有两部分代码,每部分都在自己的模块中。但Option Explicit被忽略。

作为测试,我添加了一行新代码

sausage = 3 
Run Code Online (Sandbox Code Playgroud)

并且编译没有错误。

我已经使用下面的代码检查了工作簿中所有可能的代码部分。除了一个之外,所有这些都编译失败。该模块中的整个代码是:

Option Explicit

Sub SelectPath_Click()
s = 3
End Sub
Run Code Online (Sandbox Code Playgroud)

使用“调试”-->“编译 VBA 项目”不会产生错误,并且之后再次执行此操作的选项会变灰。

您可以猜到,该代码是在单击按钮时调用的。我认为该按钮是一个表单控件,而不是一个 active-x,但我不知道如何查询该按钮以找出它是什么类型。

没有活动的加载项。

与此同时,我已将子组件从模块移至按钮所在的工作表,嘿,很快。编译失败。

那么现在的问题是,工作簿的这一部分如何忽略 Option Explicit?难道我做错了什么?

小智 7

尝试这个。这听起来很愚蠢,但实际上从 Excel 2003 到 2016 年(甚至今天早上),它多次为我修复了这种情况。如果失败,您将只花 30 秒尝试这个公认的奇怪的解决方法。

将光标定位在 Explicit 中的“t”之后 输入
一个空格(这有一个奇怪的技术原因;相信我)

回车键 按向左箭头键
按删除键

现在编译器应该执行您所期望的操作。

这是为了防止你做的一切都是正确的,并且你知道 Option Explicit 根本没有像它应该的那样工作,这会给未声明的变量带来编译错误。

  • 是的,你的贡献是有价值的——很明显它对你有帮助,也可能对其他人有帮助。这本身就很好。并非每个人都会同意这些断言,有些人会根据自己的评估投赞成票/反对票。顺便说一句,关闭另一个问题的人不是管理员或模组 - 他们是我们的其他用户。他们已经赢得了足够的代表来“投票结束”,我认为这需要 3K。 (2认同)