Kaz*_*Kaz 6 excel vba arguments excel-vba
我有一个数组数组 arrAggregatedArrays(1 to 8)
我可以像这样调用一个子:
call sub(ArrNewClient)
Run Code Online (Sandbox Code Playgroud)
但是我得到一个编译错误:"如果我尝试这个,请输入"Mismatch":
call sub(arrAggregatedArrays(1))
Run Code Online (Sandbox Code Playgroud)
为什么?它有办法吗?
为什么它不能识别arrAggregatedArrays(1)为数组,即使它会UBound像正常一样执行像它一样的函数?
Public arrAggregatedArrays() As Variant '/ Holds all the sheet-Data Arrays
Run Code Online (Sandbox Code Playgroud)
'/在一个单独的模块中声明
ReDim arrAggregatedArrays(1 To 8)
arrAggregatedArrays(1) = arrNewClient
arrAggregatedArrays(2) = arrExistingClient
arrAggregatedArrays(3) = arrGroupSchemes
arrAggregatedArrays(4) = arrOther
arrAggregatedArrays(5) = arrMcOngoing
arrAggregatedArrays(6) = arrJhOngoing
arrAggregatedArrays(7) = arrAegonQuilterArc
arrAggregatedArrays(8) = arrAscentric
Call FilterSheetArrayForColumns(arrAggregatedArrays(1))
Public Sub FilterSheetArrayForColumns(ByRef arrCurrentArray() As Variant)
Run Code Online (Sandbox Code Playgroud)
和截图:

您可以使用以下Variant两种方法之一创建数组:
Dim v1() As Variant
Dim v2: v2 = Array()
Run Code Online (Sandbox Code Playgroud)
使用前者,您可以使用v1()符号将数组作为子例程参数接收,就像VBA中的任何其他数据类型数组一样.对于后者,您需要将其作为普通变量接收,而不使用数组表示法.
变体是特殊的,因为它们可以包含许多类型,包括数组类型,这就是v = Array()语法有效的原因.当这样做时,它们应该被视为任何其他变量,并以这种方式进出子程序.
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |