Содержание
В этой статье будет продемонстрировано, как вернуть массив с помощью функции VBA.
Массив возврата функции VBA
При использовании функций для возврата массивов я настоятельно рекомендую объявлять массивы с вариантом типа:
123 | Функция ReturnArray () как вариантКонечная функция |
Варианты массивов с ними легче работать. Размер массива становится менее важной.
Примеры массивов, возвращаемых функцией
Вот пример функции, возвращающей массив:
1234567891011121314151617181920212223242526272829 | Функция ReturnArray () как вариантDim tempArr как вариант'Создать новый временный массивReDim tempArr (от 1 до 3, от 1 до 2)'Назначить значения массиваtempArr (1, 1) = "Стив"tempArr (1, 2) = "Джонсон"tempArr (2, 1) = "Райан"tempArr (2, 2) = "Джонсон"tempArr (3, 1) = "Эндрю"tempArr (3, 2) = "Скотт"'Выходной массивReturnArray = tempArrКонечная функцияSub TestTransposeArray ()Dim outputArr как вариант'Функция возврата вызоваoutputArr = ReturnArray ()'Тестовый выходMsgBox outputArr (2, 1)Конец подписки |
Обратите внимание, что мы объявили массивы с типом данных = вариант, чтобы избежать проблем с размером.
Этот пример принимает массив в качестве входных данных, транспонирует массив и выводит новый транспонированный массив:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | Функция TransposeArray (MyArray как вариант) как вариантРазмер x до длины, y до длиныDim maxX как долго, minX как долгоDim maxY As Long, minY As LongDim tempArr как вариант'Получите верхнюю и нижнюю границыmaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Создать новый временный массивReDim tempArr (minX To maxX, minY To maxX)'Транспонировать массивДля x = minX To maxXДля y = minY To maxYtempArr (y, x) = MyArray (x, y)Следующий yДалее x'Выходной массивTransposeArray = tempArrКонечная функцияSub TestTransposeArray ()Dim testArr (от 1 до 3, от 1 до 2) в качестве вариантаDim outputArr как вариант'Назначить значения массиваtestArr (1, 1) = "Стив"testArr (1, 2) = "Джонсон"testArr (2, 1) = "Райан"testArr (2, 2) = "Джонсон"testArr (3, 1) = "Эндрю"testArr (3, 2) = "Скотт"'Вызов функции транспонированияoutputArr = TransposeArray (testArr)'Тестовый выходMsgBox outputArr (2, 1)Конец подписки |