Aik*_*ken 4 vba ms-access-2003
通常,如果我想从逗号分隔的字符串创建一个数组,那么它就是我想要的 String 数组和Split()我将使用的函数。但是现在我需要将逗号分隔的字符串转换为 Variant 数组,以便它可以用作函数参数。
不幸的是,尝试使用填充变体数组Split()会引发类型不匹配错误,下面是测试示例。
Public Sub GetTheStuff()
Dim varArray() As Variant
varArray = Split("Bob,Alice,Joe,Jane", ",") '<~~ Error 13, Type Mismatch
DoTheThing varArray
End Sub
Private Sub DoTheThing(Args() As Variant)
Dim i As Long
For i = LBound(Args) To UBound(Args)
Debug.Print Args(i)
Next i
End Sub
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以从分隔字符串填充 Variant 数组,还是我必须编写自己的函数才能这样做?
注意:我无法改变我正在调用的函数需要一个 Variant 数组作为参数的事实,也不能将我的输入作为分隔字符串以外的任何东西。
总之,不 - 没有一个 Split 函数会返回一个 Variant 数组。你基本上有 2 个选项 - 如果数组很小(ish),你可以转换它:
Dim rawArray() As String
Dim varArray() As Variant
rawArray = Split("Bob,Alice,Joe,Jane", ",")
ReDim varArray(LBound(rawArray) To UBound(rawArray))
Dim index As Long
For index = LBound(rawArray) To UBound(rawArray)
varArray(index) = rawArray(index)
Next index
Run Code Online (Sandbox Code Playgroud)
您在问题中已经提到的第二个选项 - 编写您自己的 CSV 解析器(烦人但也不是非常困难)。