在Access VBA中,我尝试打印已解析的Parameter数组的值,但始终收到运行时错误13-类型不匹配。数组中的值是混合类型,即Double,String和Long。
代码如下:
Function MyArray() as Variant
Dim MyParams(2) as Variant
MyParams(0) = "3459"
MyParams(1) = "3345"
MyParams(2) = "34.666"
MyArray = MyParams
End Function
Sub PrintArray(ParamArray Params() As Variant)
Dim p_param as Variant
For Each p_param in Params
Debug.Print params < - Error occurs here
Next p_param
End Sub
我尝试转换为字符串等,但仍然无法正常工作。
有什么建议么?
为了迭代这些ParamArray
值,您需要了解要接收的参数。
说你有这个:
Public Sub DoSomething(ParamArray values() As Variant)
最酷的ParamArray
是,它允许调用代码执行此操作:
DoSomething 1, 2, "test"
如果您在DoSomething
,则收到values()
3个项目:数字1
&2
和包含单词的字符串test
。
但是,您的情况正在发生,您正在执行以下操作:
DoSomething Array(1, 2, "test")
当您进入时DoSomething
,您收到的values()
是一项:包含数字1
&的数组2
和包含word的字符串test
。
坏消息是您无法控制调用代码如何调用该函数。
好消息是您可以对此灵活:
Public Sub DoSomething(ParamArray values() As Variant)
If ArrayLenth(values) = 1 Then
If IsArray(values(0)) Then
PrintArray values(0)
End If
Else
PrintArray values
End If
End Sub
Public Function ArrayLength(ByRef target As Variant) As Long
Debug.Assert IsArray(target)
ArrayLength = UBound(target) - LBound(target) + 1
End Function
现在,任何一种方法都可以工作:
DoSomething 1, 2, "test"
DoSomething Array(1, 2, "test")
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句