我有一个项目包含一个模块(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
生活在另一个堆栈中?
答案 0 :(得分:3)
如果变量位于名为main
的模块中,并且您将其声明为Public
,即
Public myGlobal As MyType
您应该可以在用户窗体中将其引用为main.myGlobal
(或简称为myGlobal
,但通常最好对其进行限定,以便明确它所在的位置。)
答案 1 :(得分:0)
您可以使用标准模块中的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
答案 2 :(得分:0)
您必须将myGlobal
分配给异常状态。因此,您必须先调用mySubInMain
,然后才能使用myGlobal
对象。