Arrays UserForm变量范围:将二维数组值从userform2传输到userform1
我在两个用户窗体之间传输2D数组时遇到问题 当我单击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
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