【问题标题】:Hidden variable declaration VBA隐藏变量声明 VBA
【发布时间】:2017-04-19 09:57:37
【问题描述】:

问题:是否有可能在 VBA 中“隐藏”了某些变量的声明?

情况:

我有一个包含很多模块的 Excel 文件,但由于某些原因,每当我们打开它时,都会显示此消息 ,我尝试了一些在某些论坛上找到的“解决方案”但没有成功 -> 我决定逐页复制并在一个新的“干净”的 excel 文件中逐个模块地完成整个事情。

问题: 代码没有运行,说变量 XXX 没有声明(好的...有道理),但我检查了损坏的文件,即使它也没有在任何地方声明(我在整个项目中检查了Finder)有问题的代码可以运行......令人困惑!

对此有何解释?

【问题讨论】:

  • 如果一个变量没有被声明但被使用,那么它作为一个变体被创建得晚,如果选项显式不存在那么它被接受使用(虽然不是最佳实践)。旧的工作簿很可能没有明确的选项,而新的工作簿有。
  • @Zerk:是的。我完全忘记了这个细节。你是对的 !我刚刚检查了谢谢

标签: vba excel variables variable-declaration


【解决方案1】:

最坏的情况,快速而肮脏的场景 - 从每个模块、班级、工作簿和工作表中删除 Option Explicit。它确保声明所有变量。例如,尝试运行以下代码:

Option Explicit

Sub TestMe()
    k = 5
    Debug.Print k

End Sub

你不能。然后在Sub TestMe() 之后添加dim k as long。或删除Option Explicit。现在你可以运行它了。

缓慢而干净的解决方案:检查所有变量,这些变量在您尝试运行代码并声明它们时会突出显示。您的代码会运行得更快。

【讨论】:

  • 缓慢而干净的解决方案是解决方案...您的答案是错误的吗?
  • 好吧,如果你有 50.000 行代码并且在 30 分钟内有一个截止日期,你可以冒一点风险。 @whytheq
  • 是的,添加它会更好。它还可以防止拼写错误被看不见。我之前已经设置了 Require variable Declaration 选项,但这不是我做的,这就是原因。
  • 最好推迟截止日期并获得正确的结果,而不是坚持截止日期并因小数点放错而损失数十亿美元。
  • @DarrenBartrup-Cook 不是另一个与 xl 相关的世界经济崩溃.... Seb:小心点!
猜你喜欢
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多