Как получить доступ к заполненному массиву в другой подпрограмме в VBA, без аргументов? - PullRequest
0 голосов
/ 15 ноября 2018

Я так растерялся, и бесконечные поиски в Google так далеко бросают мне вызов У меня есть подпрограмма, которая собрала уникальные значения в столбце C в массив. Теперь, когда массив создан, мне нужно использовать его в другом подпрограмме, чтобы я мог перебирать значения.

Я попытался передать его в качестве аргумента, но потом не могу понять, как запустить новую подпрограмму с аргументами, т. Е.

Sub useArray(ByRef varArr() As String) 
  • как в мире мне запустить useArray? И, в любом случае, useArray должен быть основным подпрограммой, поэтому я просто запутался в том, как я могу запустить основную подпрограмму и использовать эту переменную массива, которая уже была определена / заполнена.

Я попытался использовать мою подпрограмму, которая получает уникальные значения как функцию, но она не передает значения в массиве обратно в основную подпрограмму. В конце функции AND в главном подпрограмме у меня есть:

MsgBox varArr(1)

В функции возвращается первое значение. Вернувшись в саб, он возвращает ошибку.

Помощь спасет мое здравомыслие!

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018
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
0 голосов
/ 15 ноября 2018

Предпочтительным методом будет превращение вашего сабвуфера в функцию:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...