Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 声明要在Module1中初始化并在UserForm模块中使用的变量_Vba_Excel_Global Variables - Fatal编程技术网

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
,但通常最好对其进行限定,以便它在何处明显可见)