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

Excel 2016 Option Explicit无法检测未声明的变量,excel,vba,excel-2016,Excel,Vba,Excel 2016,所有图纸和模块的顶部都有显式选项 勾选“要求变量声明” 我只有两段代码,每段都在自己的模块中。 但选项显式被忽略了 作为测试,我加入了一行新的代码 sausage = 3 它编译时没有错误 我已经用下面的代码检查了工作簿中所有可能的代码部分。除了一个之外,所有的编译都失败了。该模块中的全部代码为: Option Explicit Sub SelectPath_Click() s = 3 End Sub 使用“调试->编译VBA项目”不会产生任何错误,并且再次执行该操作的选项随后会变灰 当

所有图纸和模块的顶部都有显式选项

勾选“要求变量声明”

我只有两段代码,每段都在自己的模块中。 但选项显式被忽略了

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

sausage = 3 
它编译时没有错误

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

Option Explicit

Sub SelectPath_Click()
s = 3
End Sub
使用“调试->编译VBA项目”不会产生任何错误,并且再次执行该操作的选项随后会变灰

当你点击一个按钮时,你可以猜到这个代码被调用了。我认为按钮是一个表单控件,而不是active-x,但是我不知道如何查询按钮来找出它是什么类型

没有活动的加载项

同时,我已经将sub从一个模块移动到按钮所在的表上,嘿,presto。编译失败


所以现在的问题是,工作簿的这一部分如何能够显式忽略选项?我做错了什么吗?

我找到了解决方案,将代码从模块移动到调用它的按钮所在的工作表上

其他每个代码区都无法正确地使用duff代码编译,即使是其中包含函数的其他模块

我不得不将代码重新分配给按钮,但现在一切正常

但我不知道为什么它以前会失败


谢谢您的关注。

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

将光标定位在显式中的t之后 a型空间有一个奇怪的技术原因;相信我 按回车键 按左箭头键 点击删除键

现在,编译器应该完成您期望的操作


在这种情况下,您做的每件事都是对的,并且您知道Option Explicit并没有像它应该做的那样工作,这就是为未声明的变量提供一个编译错误。

如何编译?调试->编译VBA项目?变量是否在其他地方定义为全局变量?我无法用您提供的信息重现您的问题。我得到了编译错误:变量未定义为高亮显示。选项是否为注释?香肠的定义是全球性的吗?你的密码在哪里?错误捕获下检查了什么?我已经查到了。问题只出现在模块1中,该子模块通过单击按钮调用。这是该模块中的全部代码?Option Explicit Sub SelectPath_单击s=3结束子项它编译时没有错误。所有其他代码部分都会抛出一个错误,因为它们应该使用相同的代码。S在任何地方都没有定义,香肠也没有。要编译,我使用Debug->compileVBA项目。当您转到工作表并右键单击它时,可以检查它是窗体控件还是ActiveX控件。窗体控件应具有属性或视图代码项,ActiveX控件只有Assign宏。因为它触发了事件按钮1\u单击它应该是FormControl。谢谢:在这种情况下,它是一个活动的X按钮。当工作表代码正常工作时,仍然不明白为什么这会导致模块忽略Option explicit。这是有道理的,Button1_Click只在类内部工作。是的,工作表的处理方式与实际使用的类类似。还要注意我提交的解决方案。听起来你有效地实现了我的提议,但不幸的是,你必须做更多的工作:关于,我不会担心奇怪的否决票。投票是匿名的,每次有人建议必须证明否决票是正当的,或者不允许否决票时,社区都会拒绝。我本来打算建议取消删除另一个答案,但我发现这个问题是重复的,所以最好将其中一个作为另一个的重复关闭。如果你想保留删除的答案中的信息,你可以将其复制到这个答案中。学习这个平台需要一段时间——如果不让人们阅读大量的材料和信息,会发生很多难以解释的事情。成为社区的一员是值得的,但要摸索规范和习俗需要一段时间。我同意在另一个问题上的结论。虽然这一个是另一个的重复,因为另一个是先写的,没有可复制的例子,所以读者只能猜测问题的性质。虽然这个问题感觉很难重现,但还有很多细节需要回答。因此,如果你必须在简洁和彻底的解释之间做出选择,请选择后者。是的,你的贡献有价值——很明显,它帮助了你,也可能帮助了其他人。这本身就是好的。并非所有人都会同意这些断言和som e员工将根据自己的评估进行投票。顺便说一句,结束另一个问题的人不是管理员或mods——他们是我们的用户伙伴。他们已经赢得了足够的支持率,我认为这需要3K。