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 |