Arrays 在VBA中将数组传递给函数
我有一个接受数组的过程。因此,我可以传递如下数组:Arrays 在VBA中将数组传递给函数,arrays,vba,Arrays,Vba,我有一个接受数组的过程。因此,我可以传递如下数组: 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 "
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)
或
我得到一个编译错误,说类型不匹配:需要数组或用户定义的类型
如何将内联数组传递给函数?将数组参数从变量数组更改为变量数组
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
将数组参数从变量数组更改为仅变量数组
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
我使用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
我会在即时窗口(Ctrl+G)中打印出1、2、3、4、5、6个数字。我使用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
我在即时窗口(Ctrl+G)中打印出1、2、3、4、5、6个数字在调用语句之前使用关键字
call
,并将所有参数放在括号内,如下所示:
call MySub ("sth", Cvar(Array(1, 2, 3, 4, 5, 6)))
在调用语句之前使用关键字
call
,并将所有参数放在括号内,如下所示:
call MySub ("sth", Cvar(Array(1, 2, 3, 4, 5, 6)))
Array()
函数不返回Variant()的数组,而是返回子类型数组的变体,这就是为什么会出现类型不匹配错误的原因。Array()
函数不返回Variant()的数组,而是返回子类型数组的变体,这就是为什么会出现类型不匹配错误的原因。如果您只是复制他的第一个代码,它会工作,但是如果您按照他编写的方式内联对数组的调用,您将得到一个错误。如果您只是复制他的第一个代码,它会工作,但是如果您按照他编写的方式内联对数组的调用,您将得到一个错误。