【问题标题】:VBA - Global Variable Scope?VBA - 全局变量范围?
【发布时间】:2013-10-02 12:05:10
【问题描述】:

我在这里有点挣扎。

我在表单 (MainForm) 上创建了一些公共变量。我现在意识到我需要将其中一些变量的范围扩展到其他形式。

因此,我将 Public 声明移到了一个名为“Globals”的新模块中。

当我尝试运行新表单时,当我尝试将其值重置为“”时,我收到了关于不明确变量的投诉。使用相同变量的“MainForm”没有投诉。

模块“全局”

Public myIP As String
Public myStatus As String

新表格:

myStatus = ""   << throws an err

将公共变量声明移动到模块中是否正确?

对新表单中的“模糊变量”错误有什么想法吗??

谢谢!

【问题讨论】:

  • 公共变量应该在模块中声明。当在表单上声明时,它成为表单的属性,可以通过 formname.property 访问。 Scope of Variables
  • 同意。因此,移动模块“全局”应该扩大范围。但是,当我尝试重置该变量的值时,我不得不为模棱两可的变量名 err 苦苦挣扎。我不会以新形式重新声明该变量。
  • 通过表单引用调用变量确实有效,但看起来很麻烦:Forms!MainForm.myStatus
  • 将变量声明为“Global myStatus as string”似乎满足了我的需求。这是正确的吗?
  • “模糊变量”错误发生在同一模块内多个同名变量的情况下。通过单击标准工具栏上的 Debug > Compile VBA Project 可以轻松识别这些错误。

标签: vba ms-access


【解决方案1】:

您可能试图在同一范围内声明相同的变量。有关更多详细信息,请参阅here,以及与此here 相关的 SO 线程。

附带说明,我注意到在 Excel VBA 中,如果以相同的名称声明了过程级变量,则您必须 appropriately qualify 模块级变量。

【讨论】:

    猜你喜欢
    • 2016-09-05
    • 2012-04-29
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多