Indholdsfortegnelse
Denne artikel vil vise, hvordan du returnerer et array ved hjælp af en VBA -funktion.
VBA -funktion Return Array
Når du bruger funktioner til at returnere arrays, anbefaler jeg stærkt at deklarere arrays med typevariant:
123 | Funktion ReturnArray () Som variantAfslut funktion |
Variant arrays er lettere at arbejde med. Array størrelse bliver mindre bekymret.
Funktion Return Array Eksempler
Her er et eksempel på en funktion, der returnerer en matrix:
1234567891011121314151617181920212223242526272829 | Funktion ReturnArray () Som variantDim tempArr Som variant'Opret nyt Temp ArrayReDim tempArr (1 til 3, 1 til 2)'Tildel matrixværdiertempArr (1, 1) = "Steve"tempArr (1, 2) = "Johnson"tempArr (2, 1) = "Ryan"tempArr (2, 2) = "Johnson"tempArr (3, 1) = "Andrew"tempArr (3, 2) = "Scott"'Output ArrayReturnArray = tempArrAfslut funktionSub TestTransposeArray ()Dim outputArr som variant'OpkaldsfunktionoutputArr = ReturnArray ()'Test outputMsgBox outputArr (2, 1)Afslut Sub |
Bemærk, at vi erklærede Arrays med datatype = variant for at undgå størrelsesproblemer.
Dette eksempel tager et array som input, transponerer arrayet og udsender det nye transponerede array:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | Funktion TransposeArray (MyArray som variant) Som variantDim x Så længe, y Så længeDim maxX As Long, minX As LongDim maxY As Long, minY As LongDim tempArr Som variant'Få øvre og nedre grænsermaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Opret nyt Temp ArrayReDim tempArr (minX Til maxX, minY til maxX)'Transponer ArrayenFor x = minX Til maxXFor y = minY Til maxYtempArr (y, x) = MyArray (x, y)Næste yNæste x'Output ArrayTransposeArray = tempArrAfslut funktionSub TestTransposeArray ()Dim testArr (1 til 3, 1 til 2) som variantDim outputArr som variant'Tildel matrixværdiertestArr (1, 1) = "Steve"testArr (1, 2) = "Johnson"testArr (2, 1) = "Ryan"testArr (2, 2) = "Johnson"testArr (3, 1) = "Andrew"testArr (3, 2) = "Scott"'Call Transpose -funktionoutputArr = TransposeArray (testArr)'Test outputMsgBox outputArr (2, 1)Afslut Sub |