如何在不使用参数的情况下访问VBA另一个子集中的填充数组?

时间:2018-11-14 22:42:05

标签: arrays excel vba excel-vba

我是如此的困惑,无休止的谷歌搜索至今令我无所适从。 我有一个子集,它将C列中的唯一值收集到一个数组中。现在已经创建了数组,我需要在其他子目录中使用它,以便可以遍历所有值。

我尝试将其作为参数传递,但是后来我不知道如何运行具有参数的新子程序,即:

Sub useArray(ByRef varArr() As String) 
  • 我该如何运行useArray?无论如何,useArray应该是主要的子对象,因此我对如何运行主要子对象并使用已经定义/填充的数组变量感到困惑。

我尝试使用获取唯一值的子函数作为函数,但是它没有将数组中的值传递回主子函数。在函数AND的末尾,我有:

MsgBox varArr(1)

在函数中,它返回第一个值。回到子目录中,将返回错误。

协助会节省我的理智!

2 个答案:

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