Table des matières
Cet article montrera comment renvoyer un tableau à l'aide d'une fonction VBA.
Tableau de retour de fonction VBA
Lorsque vous utilisez des fonctions pour renvoyer des tableaux, je recommande fortement de déclarer des tableaux avec une variante de type :
123 | Fonction ReturnArray() en tant que varianteFonction de fin |
Tableaux de variantes sont plus faciles à travailler. La taille de la baie devient moins préoccupante.
Exemples de tableau de retour de fonction
Voici un exemple de fonction qui renvoie un tableau :
1234567891011121314151617181920212223242526272829 | Fonction ReturnArray() en tant que varianteDim tempArr comme variante'Créer un nouveau tableau temporaireReDim tempArr (1 à 3, 1 à 2)'Attribuer des valeurs de tableautempArr(1, 1) = "Steve"tempArr(1, 2) = "Johnson"tempArr(2, 1) = "Ryan"tempArr(2, 2) = "Johnson"tempArr(3, 1) = "Andrew"tempArr(3, 2) = "Scott"'Tableau de sortieTableauReturn = TempArrFonction de finSous TestTransposeArray()Dim outputArr As Variant'Fonction de retour d'appeloutputArr = ReturnArray()'Test de sortieMsgBox sortieArr(2, 1)Fin du sous-marin |
Notez que nous avons déclaré les tableaux avec type de données = variante pour éviter les problèmes de taille.
Cet exemple prend un tableau en entrée, transpose le tableau et génère le nouveau tableau transposé :
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | Fonction TransposeArray(MyArray As Variant) As VariantDim x aussi long, y aussi longDim maxX aussi long, minX aussi longDim maxY aussi long, minY aussi longDim tempArr comme variante'Obtenir les limites supérieure et inférieuremaxX = UBound(MyArray, 1)minX = LBound(MyArray, 1)maxY = UBound(MyArray, 2)minY = LBound(MyArray, 2)'Créer un nouveau tableau temporaireReDim tempArr (minX à maxX, minY à maxX)'Transposer le tableauPour x = minX à maxXPour y = minY à maxYtempArr(y, x) = MonTableau(x, y)Y suivantSuivant x'Tableau de sortieTableauTranspose = TableauTempFonction de finSous TestTransposeArray()Dim testArr (1 à 3, 1 à 2) en tant que varianteDim outputArr As Variant'Attribuer des valeurs de tableautestArr(1, 1) = "Steve"TestArr(1, 2) = "Johnson"testArr(2, 1) = "Ryan"TestArr(2, 2) = "Johnson"testArr(3, 1) = "Andrew"testArr(3, 2) = "Scott"Fonction de transposition d'appeloutputArr = TransposeArray(testArr)'Test de sortieMsgBox sortieArr(2, 1)Fin du sous-marin |