Tablica powrotu funkcji VBA

W tym artykule zademonstrujemy, jak zwrócić tablicę za pomocą funkcji VBA.

Tablica powrotu funkcji VBA

W przypadku używania funkcji do zwracania tablic, zdecydowanie zalecam deklarowanie tablic z wariantem typu:

123 Funkcja ReturnArray() jako wariantKoniec funkcji

Tablice wariantów są łatwiejsze w obsłudze. Rozmiar tablicy staje się mniej istotny.

Przykłady tablicy zwracanej funkcji

Oto przykład funkcji zwracającej tablicę:

1234567891011121314151617181920212223242526272829 Funkcja ReturnArray() jako wariantDim tempArr jako wariant'Utwórz nową tablicę temp.Redim tempArr (1 do 3, 1 do 2)„Przypisz wartości tablicy”tempArr(1, 1) = "Steve"tempArr(1, 2) = "Johnson"tempArr(2, 1) = "Ryan"tempArr(2, 2) = "Johnson"tempArr(3, 1) = "Andrzej"tempArr(3, 2) = "Scott"„Tablica wyjściowa”ReturnArray = tempArrKoniec funkcjiPodtestTransposeArray()Dim outputArr As Variant'Funkcja oddzwanianiaoutputArr = ReturnArray()„Wyjście testowe”MsgBox outputArr(2, 1)Napis końcowy

Zauważ, że zadeklarowaliśmy tablice z typem danych = wariant, aby uniknąć problemów z rozmiarem.

Ten przykład przyjmuje tablicę jako dane wejściowe, transponuje tablicę i wyprowadza nową transponowaną tablicę:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Funkcja TransposeArray(MyArray As Variant) As VariantDim x tak długo, y tak długoDim maxX tak długo, minX tak długoDim maxY tak długo, minY tak długoDim tempArr jako wariant'Zdobądź górne i dolne granicemaxX = UBound(MyArray, 1)minX = LBound(MyArray, 1)maxY = UBound(MyArray, 2)minY = LBound(MyArray, 2)'Utwórz nową tablicę temp.Redim tempArr (minX do maxX, minY do maxX)„Transponuj szyk”Dla x = minX Do maxXDla y = minY Do maxYtempArr(y, x) = MojaTablica(x, y)Następny takNastępny x„Tablica wyjściowa”TransposeArray = tempArrKoniec funkcjiPodtestTransposeArray()Dim testArr (1 do 3, 1 do 2) jako wariantDim outputArr As Variant„Przypisz wartości tablicy”testArr(1, 1) = "Steve"testArr(1, 2) = "Johnson"testArr(2, 1) = "Ryan"testArr(2, 2) = "Johnson"testArr(3, 1) = "Andrzej"testArr(3, 2) = "Scott"„Wywołaj funkcję transpozycji”outputArr = TransposeArray(testArr)„Wyjście testowe”MsgBox outputArr(2, 1)Napis końcowy
wave wave wave wave wave