L'un des avantages de VBA étant un langage interprété est que nous pouvons exécuter des procédures individuelles sans avoir à compiler l'intégralité de l'application. Explorons exactement comment nous procédons.
Procédures publiques
Routines publiques sans arguments
Dans un module standard, vous pouvez placer le curseur à l'intérieur d'une routine publique qui n'a pas d'arguments, appuyez sur [F5], et cette routine s'exécutera immédiatement.
Si vous souhaitez parcourir la routine, vous pouvez soit définir un point d'arrêt sur l'une des lignes avant d'appuyer sur [F5] ou simplement appuyer sur [F8] ("Step Into") et commencer immédiatement à parcourir le code de la routine.
Fonctions publiques sans arguments
Cela fonctionne également avec les fonctions publiques dans les modules de code standard. La clé est que la fonction ne peut accepter aucun argument, même facultatif.
Procédures publiques avec arguments
Que se passe-t-il si vous essayez d'exécuter une procédure publique qui prend un ou plusieurs arguments (même facultatifs) ? La commande "Exécuter> Exécuter la macro" exécute :
Procédures privées
Procédures privées sans arguments
Je ne peux pas m'attribuer le mérite d'avoir découvert celui-ci. Un merci spécial à Terry Chapman pour avoir transmis le fait que vous pouvez appuyer sur F5 pour déboguer Privé procédures en place, pas seulement des procédures publiques.
Comme Terry, j'avais l'habitude de changer temporairement mes procédures privées en publiques pendant que je les déboguais. Il s'avère que je n'ai jamais eu à le faire du tout.
Procédures privées Avec Argumentation
Une fois que Terry m'a fait remettre en question mes hypothèses, j'ai décidé de voir jusqu'où je pouvais m'en tirer. Bien plus que ce à quoi je m'attendais, il s'avère !
Croyez-le ou non, vous pouvez déboguer des procédures privées qui prennent des arguments sans les transformer temporairement en procédures publiques. Pour ce faire, il vous suffit d'appeler le nom complet de la procédure à partir de la fenêtre Exécution. Par "nom complet", j'entends le nom au format {ModuleName}.{ProcedureName}
.
Découvrez cet exemple :
Mais ne me croyez pas sur parole. Allez essayer !