Ce tutoriel vous apprendra comment renvoyer une valeur à partir d'une sous-procédure en VBA.
Une sous-procédure n'est pas conçue pour renvoyer une valeur - c'est à cela qu'est utilisée une procédure de fonction. Cependant, il peut arriver que vous exécutiez du code dans une sous-procédure et que vous deviez obtenir une valeur de cette sous-procédure. Pour ce faire, utilisez un module ou des variables globales ou une sous-procédure pour remplir une feuille Excel.
Utilisation de variables pour renvoyer une valeur
Vous pouvez déclarer des variables au niveau du module. Ce faisant, ces variables peuvent être utilisées n'importe où dans le module et les variables conservent leurs valeurs. Pour déclarer une variable au niveau du module, déclarez simplement la variable en haut de votre module de code :
123456789 | Option ExpliciteDim dblQty comme DoubleSous-testA()'appelez le sous-test TestBAppel TestB'afficher la valeur de la variable dans la fenêtre du moduleDebug.Print dblQtyFin du sous-marin |
1234 | Sous-test B()'remplir la variable du moduledblQté = 900Fin du sous-marin |
Pour les assembler, nous exécuterions TestA, qui à son tour appellerait TestB et nous donnerait la valeur de 900 dans la fenêtre immédiate.
Cela ne fonctionnerait que dans le module, car la variable a été déclarée à l'aide de l'instruction Dim au niveau du module.
Variable globale
Vous pouvez déclarer la variable à un niveau global pour l'utiliser dans tous les modules de votre projet.
Utilisation d'une sous-procédure pour remplir une feuille Excel
La sous-procédure ci-dessous remplira directement la plage A1 à C1 dans votre feuille Excel, renvoyant ainsi des valeurs aux cellules de la sous-procédure.
12345 | Sous-PopulationRange()Plage("A1") = "Produit"Plage("B1") = "Quantité"Plage("C1") = "Coût"Fin du sous-marin |
Vous pouvez ensuite référencer ces valeurs dans une autre procédure en référençant les valeurs des cellules :
1234567 | Sous-RécupérationPlage()Dim Product as String, Quant as long, Cost as doubleProduit = Gamme ("A1")Quant = Plage("B1")Coût = Gamme ("C1")Fin du sous-marin |