VBA Function Return Array

Acest articol va demonstra cum se returnează o matrice utilizând o funcție VBA.

VBA Function Return Array

Când utilizați funcții pentru a returna matrici, vă recomand cu tărie să declarați matrici cu variantă de tip:

123 Funcția ReturnArray () Ca variantăFuncția de sfârșit

Matrici de variante sunt mai ușor de lucrat. Dimensiunea matricei devine mai puțin preocupantă.

Funcții Return Array Exemple

Iată un exemplu de funcție care returnează o matrice:

1234567891011121314151617181920212223242526272829 Funcția ReturnArray () Ca variantăDim tempArr Ca variantă'Creați o nouă matrice temporalăReDim tempArr (1 până la 3, 1 până la 2)'Atribuiți valori matricetempArr (1, 1) = "Steve"tempArr (1, 2) = "Johnson"tempArr (2, 1) = "Ryan"tempArr (2, 2) = "Johnson"tempArr (3, 1) = "Andrew"tempArr (3, 2) = "Scott"„Matrice de ieșireReturnArray = tempArrFuncția de sfârșitSub TestTransposeArray ()Dim outputArr Ca variantă„Funcția de returnare a apeluluioutputArr = ReturnArray ()'Rezultatul de testareMsgBox outputArr (2, 1)Sfârșitul Sub

Observați că am declarat matricile cu tip de date = variantă pentru a evita problemele de dimensiune.

Acest exemplu ia o matrice ca intrare, transpune matricea și transmite noua matrice transpusă:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Funcția TransposeArray (MyArray As Variant) Ca VariantDim x As Long, y As LongDim maxX As Long, minX As LongDim maxY As Long, minY As LongDim tempArr Ca variantă„Obțineți limitele superioare și inferioaremaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Creați o nouă matrice temporalăReDim tempArr (minX To maxX, minY To maxX)„Transpune matriceaPentru x = minX la maxXPentru y = minY To maxYtempArr (y, x) = MyArray (x, y)Următorul yUrmătorul x„Matrice de ieșireTransposeArray = tempArrFuncția de sfârșitSub TestTransposeArray ()Dim testArr (1 până la 3, 1 până la 2) Ca variantăDim outputArr Ca variantă'Atribuiți valori matricetestArr (1, 1) = "Steve"testArr (1, 2) = "Johnson"testArr (2, 1) = "Ryan"testArr (2, 2) = "Johnson"testArr (3, 1) = "Andrew"testArr (3, 2) = "Scott"„Funcția Transpunere apeloutputArr = TransposeArray (testArr)'Rezultatul de testareMsgBox outputArr (2, 1)Sfârșitul Sub
wave wave wave wave wave