【发布时间】:2015-02-19 00:05:39
【问题描述】:
我有一个关于全局范围的问题,并将问题抽象为一个简单的示例:
在 Excel 工作簿中:
在 Sheet1 中,我有两 (2) 个按钮。
第一个标记为 SetMe,并链接到 Sheet1 的模块中的子例程:
Sheet1 代码:
Option Explicit
Sub setMe()
Global1 = "Hello"
End Sub
第二个标记为 ShowMe,并链接到 ThisWorkbook 的模块中的子例程:
ThisWorkbook 代码:
Option Explicit
Public Global1 As String
Debug.Print("Hello")
Sub showMe()
Debug.Print (Global1)
End Sub
单击 SetMe 会生成一个编译器 error: variable not defined。
当我创建一个单独的模块并将 Global1 的声明移入其中时,一切正常。
所以我的问题是:
我读过的所有内容都表明,在模块顶部声明的全局变量在任何代码之外都应该对项目中的所有模块可见。显然情况并非如此。
除非我对Module的理解不正确。
工作簿附带的对象Sheet1、Sheet2、ThisWorkbook...:这些不是能够在全局范围内声明变量的模块吗?
或者是唯一可以在 Modules 类型的单独模块中声明全局的地方。
【问题讨论】:
-
我相信 UserForms 的代码属于模块类型,尽管它并没有真正列出。对吗?
-
@sancho.s 我删除了它以避免混淆 :) 我错过了 Pearson 的链接并误解了我发布的 MSDN 链接中的一行。今天学到了新东西:)
-
您在这里找到任何有用的答案了吗?提供反馈总是好的,所以其他 SO 用户可以看到。
标签: excel module global-variables public vba