Matrice di ritorno della funzione VBA

Questo articolo dimostrerà come restituire un array utilizzando una funzione VBA.

Matrice di ritorno della funzione VBA

Quando si utilizzano le funzioni per restituire gli array, consiglio vivamente di dichiarare gli array con la variante di tipo:

123 Funzione ReturnArray() come varianteFine funzione

Array di varianti sono più facili da lavorare. La dimensione dell'array diventa meno preoccupante.

Esempi di array di restituzione di funzioni

Ecco un esempio di una funzione che restituisce un array:

1234567891011121314151617181920212223242526272829 Funzione ReturnArray() come varianteDim tempArr come variante"Crea nuovo array temporaneo"ReDim tempArr(da 1 a 3, da 1 a 2)"Assegna valori array"tempArr(1, 1) = "Steve"tempArr(1, 2) = "Johnson"tempArr(2, 1) = "Ryan"tempArr(2, 2) = "Johnson"tempArr(3, 1) = "Andrea"tempArr(3, 2) = "Scott""Matrice di output"ReturnArray = tempArrFine funzioneSub TestTransposeArray()Dim outputArr As Variant"Funzione di ritorno di chiamata"outputArr = ReturnArray()"Uscita di prova"MsgBox outputArr(2, 1)Fine sottotitolo

Si noti che abbiamo dichiarato gli array con tipo di dati = variante per evitare problemi di dimensioni.

Questo esempio prende un array come input, traspone l'array e restituisce il nuovo array trasposto:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Funzione TransposeArray(MyArray As Variant) As VariantDim x quanto più lungo, y quanto più lungoDim maxX quanto più lungo, minX quanto più lungoDim maxY quanto più lungo, minY quanto più lungoDim tempArr come variante"Ottieni limiti superiori e inferiori"maxX = UBound(MyArray, 1)minX = LBound(MyArray, 1)maxY = UBound(MyArray, 2)minY = LBound(MyArray, 2)"Crea nuovo array temporaneo"ReDim tempArr (da minX a maxX, da minY a maxX)"Trasponi l'array"Per x = minX a maxXPer y = minY a maxYtempArr(y, x) = MyArray(x, y)Avanti sìAvanti x"Matrice di output"TransposeArray = tempArrFine funzioneSub TestTransposeArray()Dim testArr(da 1 a 3, da 1 a 2) come varianteDim outputArr As Variant"Assegna valori array"testArr(1, 1) = "Steve"testArr(1, 2) = "Johnson"testArr(2, 1) = "Ryan"testArr(2, 2) = "Johnson"testArr(3, 1) = "Andrea"testArr(3, 2) = "Scott""Chiama la funzione di trasposizione"outputArr = TransposeArray(testArr)"Uscita di prova"MsgBox outputArr(2, 1)Fine sottotitolo
wave wave wave wave wave