类型不匹配错误,在函数中返回数组时

时间:2014-06-10 19:02:14

标签: function excel-vba vba excel

我有一个愚蠢的问题,当我创建一个返回数组的函数时,我总是得到错误类型不匹配。这里有两个简单的例子: 如果我在声明时没有声明类型:它将被编译,但在函数结果后得到错误

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

1 个答案:

答案 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

最好尽可能使用显式类型。