Arrays UserForm变量范围:将二维数组值从userform2传输到userform1

Arrays UserForm变量范围:将二维数组值从userform2传输到userform1,arrays,excel,vba,userform,Arrays,Excel,Vba,Userform,我在两个用户窗体之间传输2D数组时遇到问题 当我单击userform1中的命令按钮时,它将打开userform2。然后我点击userform2中的CommandButton来创建一个2D数组。在此之后,我终止userform2,并希望将我的2D数组传输到userform1 我的最佳尝试是在userform1click事件中调用函数。我将此函数放入userform2模块中。但是我的userform2函数在userform2中没有看到来自另一个子节点的2D数组Private Sub-userform

我在两个用户窗体之间传输2D数组时遇到问题

当我单击
userform1
中的命令按钮时,它将打开
userform2
。然后我点击
userform2
中的CommandButton来创建一个2D数组。在此之后,我终止
userform2
,并希望将我的2D数组传输到
userform1

我的最佳尝试是在
userform1
click事件中调用函数。我将此函数放入
userform2
模块中。但是我的
userform2
函数在
userform2
中没有看到来自另一个子节点的2D数组
Private Sub-userform\u terminate()
可以看到这个2D数组,它是在
Private Sub-CommandButton1\u Click()
中创建的,但我的函数没有

用户表单1:

Private Sub CommandButton1_Click()
    dim results()     
    results = userform2.get2dArray()
End Sub
用户表单2:

Private myArray()

Private Sub CommandButton1_Click()
    ReDim myArray(1 To 2, 1 To 2)
    myArray(1, 1) = "arg1"
    myArray(2, 1) = "arg2"
    myArray(1, 2) = "arg3"
    myArray(2, 2) = "arg4"
End Sub

Private Sub userform_terminate() 
   'here i can see every args in myArray
   ...
end sub

Function get2dArray() 
    'that function I called from userform1

    userform2.show vbModal
    get2dArray = myArray 'but myArray is empty
End Function
我想将
myArray
userform2
传输回主表单
userform1

主要问题是
userform2。get2dArray
userform2
模块中看不到私有变量
myArray


将myArray设置为全局也是不可能的。

在标准模块(而不是用户表单)中使用一个公共函数,该函数接受一个可选参数(2D数组)

然后,该参数作为一个参数存储在函数中。下次调用函数时,如果缺少参数,则返回存储的静态变量。以下是一个例子:

Public Function store2DArray(Optional my2DArray As Variant) As Variant
    Static storedArray As Variant

    If IsMissing(my2DArray) Then
        store2DArray = storedArray
    Else
        storedArray = my2DArray
    End If
End Function
然后,存储阵列的用法如下所示:

Sub Userform2Button1_Click()
     store2DArray myArray
End Sub
Sub Userform1Button2_Click()
    myArray = store2DArray
End Sub
以下是检索阵列的方式:

Sub Userform2Button1_Click()
     store2DArray myArray
End Sub
Sub Userform1Button2_Click()
    myArray = store2DArray
End Sub