我有一个包含一个模块(main
)和一个用户表单模块(myUserForm
)的项目。我在模块main
:顶部声明变量为全局变量
Dim myGlobal As MyType
然后我在模块main
:中设置变量
Public Sub mySubInMain()
Set myGlobal = New MyType
End Sub
但当我尝试在模块myUserForm
:中使用它时
Private Sub oneSubOfTheForm()
myGlobal.Name = "something"
End Sub
我得到Object required
异常。我应该如何声明我的变量myGlobal
存在于另一个堆栈中?
如果变量在一个名为main
的模块中,并且您声明它为Public
,即
Public myGlobal As MyType
您应该能够在UserForm中将其称为main.myGlobal
(或简称为myGlobal
,但通常最好对其进行限定,以便清楚地显示其所在位置)。
您可以在标准模块中使用Public属性来获取对象,以便控制其状态。
Option Explicit
Private type_ As CustomType
Public Property Get MyType() As CustomType
If type_ Is Nothing Then Set type_ = New CustomType
Set MyType = type_
End Property
您必须为myGlobal
分配一些东西,作为异常状态。所以,您必须首先调用mySubInMain
,然后才能使用myGlobal
对象。