VBA -funksjon Return Array

Innholdsfortegnelse

Denne artikkelen viser hvordan du returnerer en matrise ved hjelp av en VBA -funksjon.

VBA -funksjon Return Array

Når du bruker funksjoner for å returnere matriser, anbefaler jeg på det sterkeste å deklarere matriser med typevariant:

123 Funksjon ReturnArray () Som variantSluttfunksjon

Variant Arrays er lettere å jobbe med. Matrisestørrelse blir mindre bekymret.

Funksjon Return Array Eksempler

Her er et eksempel på en funksjon som returnerer en matrise:

1234567891011121314151617181920212223242526272829 Funksjon ReturnArray () Som variantDim tempArr Som variant'Lag nytt Temp ArrayReDim tempArr (1 til 3, 1 til 2)'Tilordne matriseverdiertempArr (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 = tempArrSluttfunksjonSub TestTransposeArray ()Dim outputArr som variant'Samtale -returfunksjonoutputArr = ReturnArray ()'TestutgangMsgBox outputArr (2, 1)Slutt Sub

Legg merke til at vi erklærte matriser med datatype = variant for å unngå størrelsesproblemer.

Dette eksemplet tar en matrise som inngang, transponerer matrisen og sender ut den nye transponerte matrisen:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Funksjon TransposeArray (MyArray Som Variant) Som VariantDim x Så lenge, y Så lengeDim maxX As Long, minX As LongDim maxY As Long, minY As LongDim tempArr Som variant'Få øvre og nedre grensermaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Lag nytt Temp ArrayReDim tempArr (minX To maxX, minY To maxX)'Transponer matrisenFor x = minX Til maksXFor y = minY Til maksYtempArr (y, x) = MyArray (x, y)Neste yNeste x'Output ArrayTransposeArray = tempArrSluttfunksjonSub TestTransposeArray ()Dim testArr (1 til 3, 1 til 2) som variantDim outputArr som variant'Tilordne matriseverdiertestArr (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 -funksjonoutputArr = TransposeArray (testArr)'TestutgangMsgBox outputArr (2, 1)Slutt Sub
wave wave wave wave wave