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