Vba 声明要在Module1中初始化并在UserForm模块中使用的变量
我有一个包含一个模块(Vba 声明要在Module1中初始化并在UserForm模块中使用的变量,vba,excel,global-variables,Vba,Excel,Global Variables,我有一个包含一个模块(main)和一个userform模块(myUserForm)的项目。 我在模块main顶部将变量声明为全局变量: Dim myGlobal As MyType Public Sub mySubInMain() Set myGlobal = New MyType End Sub 。。。然后在模块main中设置变量: Dim myGlobal As MyType Public Sub mySubInMain() Set myGlobal = New MyT
main
)和一个userform模块(myUserForm
)的项目。
我在模块main
顶部将变量声明为全局变量:
Dim myGlobal As MyType
Public Sub mySubInMain()
Set myGlobal = New MyType
End Sub
。。。然后在模块main
中设置变量:
Dim myGlobal As MyType
Public Sub mySubInMain()
Set myGlobal = New MyType
End Sub
。。。但是当我尝试在模块myUserForm
中使用它时:
Private Sub oneSubOfTheForm()
myGlobal.Name = "something"
End Sub
。。。我得到所需的
对象
异常。我应该如何声明我的变量myGlobal
位于另一个堆栈中?您可以在标准模块中使用公共属性来获取对象,以便控制其状态
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
对象。如果变量位于名为main
的模块中,并且您将其声明为Public
,即
Public myGlobal As MyType
您应该能够在您的用户表单中将其称为main.myGlobal
(或者简单地称为myGlobal
,但通常最好对其进行限定,以便它在何处明显可见)