我有一个关于全局范围的问题,并将问题抽象为一个简单的例子:
在Excel工作簿中:在Sheet1中,我有两(2)个按钮.
第一个标记为SetMe,并链接到Sheet1模块中的子例程:
Sheet1代码:
Option Explicit
Sub setMe()
Global1 = "Hello"
End Sub
Run Code Online (Sandbox Code Playgroud)
第二个标记为ShowMe,并链接到ThisWorkbook模块中的子例程:
ThisWorkbook代码:
Option Explicit
Public Global1 As String
Debug.Print("Hello")
Sub showMe()
Debug.Print (Global1)
End Sub
Run Code Online (Sandbox Code Playgroud)
单击SetMe可生成编译器error: variable not defined.
当我创建一个单独的模块并将Global1的声明移入其中时,一切正常.
所以我的问题是:
我读过的所有内容都表明,在任何代码之外的模块顶部声明的全局变量应该对项目中的所有模块都可见.显然情况并非如此.除非我对Module的理解不正确.
这些对象Sheet1,Sheet2,ThisWorkbook,...来与工作簿:这些是不是能够模块在全局范围内声明的变量?
或者是唯一的地方可以宣告一个全球性的,在类型的单独的模块的模块.