声明要在Module1中初始化并在UserForm模块中使用的变量



我有一个包含一个模块(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对象。

最新更新