我有一个愚蠢的问题,当我创建一个返回数组的函数时,我总是得到错误类型不匹配。这里有两个简单的例子: 如果我在声明时没有声明类型:它将被编译,但在函数结果后得到错误
Function aa(c As Integer)
Dim arr(10)
Dim i As Integer
Dim k As Double
For i = 0 To 10
k = i ^ 2 / c + 1
arr(i) = CStr(k)
Debug.Print k
Next i
aa = arr
End Function
如果我声明类型:它不能被编译并直接得到错误
Function aa(c As Integer) as string()
Dim arr(10) as string
Dim i As Integer
Dim k As Double
For i = 0 To 10
k = i ^ 2 / c + 1
arr(i) = CStr(k)
Debug.Print k
Next i
aa = arr
End Function
答案 0 :(得分:1)
如果您使用相同的类型调用它,您的第二个版本将起作用:
Sub Testaa()
Dim result() As String
result = aa(4)
End Sub
您的第一个版本将返回Variant
- 任何未指定特定类型的函数(或变量)将默认为Variant
。因此,您还需要将返回结果存储在Variant中:
Sub Testaa()
Dim result As Variant
result = aa(4)
End Sub
最好尽可能使用显式类型。