Innehållsförteckning
Den här artikeln visar hur du returnerar en matris med en VBA -funktion.
VBA -funktion Return Array
När jag använder funktioner för att returnera matriser rekommenderar jag starkt att deklarera matriser med typvariant:
123 | Funktion ReturnArray () som variantAvsluta funktion |
Varianter är lättare att arbeta med. Arraystorleken blir mindre oroande.
Funktion Return Array Exempel
Här är ett exempel på en funktion som returnerar en array:
1234567891011121314151617181920212223242526272829 | Funktion ReturnArray () som variantDim tempArr som variant'Skapa ny Temp ArrayReDim tempArr (1 till 3, 1 till 2)'Tilldela matrisvärdentempArr (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 = tempArrAvsluta funktionSub TestTransposeArray ()Dim outputArr som variant'Call Return -funktionoutputArr = ReturnArray ()'TestutmatningMsgBox outputArr (2, 1)Avsluta Sub |
Lägg märke till att vi har deklarerat matriserna med datatyp = variant för att undvika storleksproblem.
Detta exempel tar en array som en ingång, transponerar matrisen och matar ut den nya transponerade arrayen:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | Funktion TransposeArray (MyArray som variant) Som variantDim x As Long, y As LongDim maxX As Long, minX As LongDim maxY As Long, minY As LongDim tempArr som variant'Få övre och nedre gränsermaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Skapa ny Temp ArrayReDim tempArr (minX till maxX, minY till maxX)'Transpone the ArrayFör x = minX Till maxXFör y = minY Till maxYtempArr (y, x) = MyArray (x, y)Nästa yNästa x'Output ArrayTransposeArray = tempArrAvsluta funktionSub TestTransposeArray ()Dim testArr (1 till 3, 1 till 2) som variantDim outputArr som variant'Tilldela matrisvärdentestArr (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)'TestutmatningMsgBox outputArr (2, 1)Avsluta Sub |