我有一个接受数组的过程。因此我可以传递一个数组:
Public Sub MySub (Something as String, ByRef Arr() as Variant)
'Stuff
End Sub
Public Sub Test()
Dim Columns() As Variant
Columns = Array(1, 2, 3, 4, 5, 6)
MySub "sth", Columns
End Sub
问题在于,当我想像
那样内联时MySub "sth", Array(1, 2, 3, 4, 5, 6)
或
MySub "sth", Cvar(Array(1, 2, 3, 4, 5, 6))
我收到一个编译错误,说明类型不匹配:数组或用户定义的类型。
如何将内联数组传递给函数?
答案 0 :(得分:2)
我使用Excel 2013来运行您的VBA代码,并且没有类型不匹配错误。 例如,使用sub:
Public Sub MySub(Something As String, ByRef Arr() As Variant)
For i = 0 To UBound(Arr)
Debug.Print Arr(i)
Next i
End
End Sub
我在即时窗口中打印出1,2,3,4,5,6个数字(Ctrl + G)
答案 1 :(得分:1)
将数组参数从变体数组更改为仅变体
Public Sub MySub(Something As String, ByRef Arr As Variant)
'Stuff
End Sub
Public Sub Test()
Dim Columns() As Variant
Columns = Array(1, 2, 3, 4, 5, 6)
MySub "sth", Columns
MySub "sth", Array(1, 2, 3, 4, 5, 6)
'both worked in my test
End Sub
答案 2 :(得分:0)
在调用语句之前使用关键字 call
并将所有参数放在括号内,如下所示:
call MySub ("sth", Cvar(Array(1, 2, 3, 4, 5, 6)))