我有一个创建和处理数组的VBA Sub:
Option Base 1
Public myArr(20, 10) As Variant
Sub Stackoverflow()
Dim x, y As Integer
'Put some values to array (only in the first 15 rows)
For x = 1 To 15
For y = 1 To 10
myArr(x, y) = (x * y + 8)
Next y
Next x
End Sub
然后有一个带有命令按钮的用户窗体,它应该能够处理数组myArr。
Private Sub commandbutton_Click()
Dim a, b As Integer
'Put some other values in the remaining rows
For a = 16 To 20
For b = 1 To 10
myArr(a, b) = (a * b + 3)
Next b
Next a
End Sub
如何将数组传递给userform?以及Sub如何查看更新的阵列? 感谢
答案 0 :(得分:0)
完成后,您的代码对我来说非常合适。我只能假设您不知道如何调用用户表单。
我将您的Stackoverflow()
复制到了一个没有更改的模块。
在我添加的同一模块中:
Sub Main()
Dim RowMyArr As Long
Dim ColMyArr As Long
Load UserForm1
Call Stackoverflow
UserForm1.Show
Debug.Print " ";
For ColMyArr = LBound(myArr, 1) To UBound(myArr, 1)
Debug.Print Right(" " & ColMyArr, 4) & " ";
Next
Debug.Print
For RowMyArr = LBound(myArr, 2) To UBound(myArr, 2)
Debug.Print Right(" " & RowMyArr, 3) & " ";
For ColMyArr = LBound(myArr, 1) To UBound(myArr, 1)
Debug.Print Right(" " & myArr(ColMyArr, RowMyArr), 4) & " ";
Next
Debug.Print
Next
End Sub
我创建了一个用户表单,并没有更改UserForm1的默认名称。我添加了一个名为commandbutton
的按钮,并将代码复制到表单的代码区域。在End Sub
之前,我添加了Unload UserForm1
以关闭并退出表单。
我运行Main并将以下内容输出到即时窗口:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 19 20 21 22 23
2 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 35 37 39 41 43
3 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53 51 54 57 60 63
4 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 67 71 75 79 83
5 13 18 23 28 33 38 43 48 53 58 63 68 73 78 83 83 88 93 98 103
6 14 20 26 32 38 44 50 56 62 68 74 80 86 92 98 99 105 111 117 123
7 15 22 29 36 43 50 57 64 71 78 85 92 99 106 113 115 122 129 136 143
8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128 131 139 147 155 163
9 17 26 35 44 53 62 71 80 89 98 107 116 125 134 143 147 156 165 174 183
10 18 28 38 48 58 68 78 88 98 108 118 128 138 148 158 163 173 183 193 203
我没有检查过这些值,但我认为它们是正确的。
答案 1 :(得分:-1)
它是一个公共数组,可以从应用程序中的任何形式访问。 。 。为什么你还需要通过呢? 这个描述了如何将参数传递给access vba中的表单。