在VBA中从函数返回一个数组

3

我在尝试让这段代码正常工作中遇到了麻烦。我只想从一个函数中返回一个数组,以下是我尝试过的代码。

Sub 
   Dim storeData As Variant: Set storeData = getData
   Debug.Print storeData(1)
End Sub

Function getData() As Variant
   Dim arr(2) As Variant
    arr(1) = "ergreg"
    arr(2) = "1005"
    getData = arr
End Function

没有任何错误被抛出,但是立即窗口中没有打印任何内容。

7
移除"Set"。 - GSerg
这实际上应该会产生类型不匹配的错误。 - Comintern
@ChrisBull 请看下面的答案(您的 Debug.Print storeData(1) 只会打印出数组中的第二个元素,而不是三个元素中的任何一个)。 - Shai Rado
@Comintern 我没有设置Option Explicit,又学到了一个教训。 - ChrisBull
2个回答

2
如果您想打印出数组的所有元素,您需要在调试器中添加一个For循环。
Dim storeData As Variant
Dim i As Long
storeData = getData

For i = LBound(storeData) To UBound(storeData)
    Debug.Print storeData(i)
Next i

快速提醒: Dim arr(2) As Variant ,意味着 arr 有3个元素(从0开始),您只为第二个和第三个元素分配了值。


1
谢谢回复,我将基础设置为1。我现在不需要打印所有的值,只需要其中一个。 - ChrisBull

-1

我的错误 - 感谢 @GSerg 找到它。

只需要移除 'Set'。如此简单。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接