VBA -funktion Return Array

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
wave wave wave wave wave