我是如此的困惑,无休止的谷歌搜索至今令我无所适从。 我有一个子集,它将C列中的唯一值收集到一个数组中。现在已经创建了数组,我需要在其他子目录中使用它,以便可以遍历所有值。
我尝试将其作为参数传递,但是后来我不知道如何运行具有参数的新子程序,即:
Sub useArray(ByRef varArr() As String)
我尝试使用获取唯一值的子函数作为函数,但是它没有将数组中的值传递回主子函数。在函数AND的末尾,我有:
MsgBox varArr(1)
在函数中,它返回第一个值。回到子目录中,将返回错误。
协助会节省我的理智!
答案 0 :(得分:1)
首选方法是将Sub转换为功能:
Function useArray(ByRef varArr() As String) As string()
varArr(2) = "changed it"
useArray = varArr
End Function
您将打给谁:
Sub test()
Dim a(2) As String
a(0) = "a0"
a(1) = "a1"
a(2) = "a2"
MsgBox useArray(a)(2)
End Sub
答案 1 :(得分:0)
Sub Main()
Call DoSomethingWithArray(PopulateArray)
End Sub
Function PopulateArray() As Variant
PopulateArray = Array("foo", "bar") ' return some array
End Function
Sub DoSomethingWithArray(ByVal someArray As Variant) ' process array
Dim i As Integer
For i = LBound(someArray) To UBound(someArray)
Debug.Print someArray(i)
Next i
End Sub