Table des matières:
- Examiner votre code
- Utiliser la fonction MsgBox
- Insertion d'un débogage. Instructions d'impression
- Utilisation du débogueur VBA
Vidéo: Débuter avec VBA Excel et la programmation 2025
Vous pouvez rencontrer des problèmes avec votre code VBA, mais comment trouvez-vous le problème? Parfois, votre code VBA peut nécessiter un débogage. Continuez votre lecture pour découvrir les quatre méthodes les plus courantes de débogage du code VBA Excel:
-
Examen du code
-
Insertion de fonctions MsgBox à divers emplacements dans votre code
-
Insertion de débogage. Instructions d'impression
-
Utilisation des outils de débogage intégrés à Excel
Examiner votre code
La technique de débogage la plus simple consiste peut-être à regarder de plus près votre code pour voir si vous pouvez trouver le problème. Cette méthode, bien sûr, nécessite des connaissances et de l'expérience. En d'autres termes, vous devez savoir ce que vous faites. Si vous êtes chanceux, l'erreur saute à droite et vous claquez votre front et dites: «D'oh! "Lorsque la douleur au front diminue, vous pouvez résoudre le problème.
Remarquez l'utilisation des mots: "Si vous êtes chanceux. "C'est parce que souvent vous découvrez des erreurs lorsque vous travaillez sur votre programme pendant huit heures d'affilée, c'est 2 a. m. et vous utilisez de la caféine et de la volonté. Parfois, vous avez de la chance si vous pouvez même voir votre code, et encore moins trouver les bugs. Ainsi, ne soyez pas surpris si le simple fait d'examiner votre code ne vous suffit pas pour trouver et supprimer tous les bogues qu'il contient.
Utiliser la fonction MsgBox
Un problème courant dans de nombreux programmes implique qu'une ou plusieurs variables ne prennent pas les valeurs que vous attendez. Dans ce cas, la surveillance de la (des) variable (s) pendant l'exécution de votre code est une technique de débogage utile. Une façon de le faire consiste à insérer des fonctions MsgBox temporaires dans votre routine. Par exemple, si vous avez une variable nommée CellCount, vous pouvez insérer l'instruction suivante:
MsgBox CellCount
Lorsque vous exécutez la routine, la fonction MsgBox affiche la valeur CellCount.
Il est souvent utile d'afficher les valeurs de deux variables ou plus dans la boîte de message. L'instruction suivante affiche la valeur actuelle de deux variables: LoopIndex (1) et CellCount (72), séparées par un espace.
MsgBox LoopIndex & "" & CellCount
Notez que les deux variables sont combinées avec l'opérateur de concaténation (&) et insèrent un espace entre elles. Sinon, la boîte de message enchaîne les deux valeurs, les faisant ressembler à une seule valeur. Vous pouvez également utiliser la constante intégrée, vbNewLine, à la place du caractère espace. vbNewLine insère un saut de ligne, qui affiche le texte sur une nouvelle ligne. L'instruction suivante affiche trois variables, chacune sur une ligne distincte:
MsgBox LoopIndex & vbNewLine & CellCount & vbNewLine & MyVal
Cette technique ne se limite pas à la surveillance des variables. Vous pouvez utiliser une boîte de message pour afficher toutes sortes d'informations utiles pendant que votre code est en cours d'exécution. Par exemple, si votre code parcourt une série de feuilles, l'instruction suivante affiche le nom et le type de la feuille active:
MsgBox ActiveSheet. Name & "" & TypeName (ActiveSheet)
Si votre boîte de message affiche quelque chose d'inattendu, appuyez sur Ctrl + Rupture, et une boîte de dialogue indiquant que l'exécution du code a été interrompue, vous avez quatre choix:
-
Cliquez sur Continuer le bouton. Le code continue à s'exécuter.
-
Cliquez sur le bouton Fin. L'exécution s'arrête.
-
Cliquez sur le bouton Déboguer. Le VBE passe en mode débogage.
-
Cliquez sur le bouton Aide. Un écran d'aide vous indique que vous avez appuyé sur Ctrl + Rupture. En d'autres termes, ce n'est pas très utile.
Appuyer sur Ctrl + Pause arrête l'exécution de votre code et vous donne quelques choix.
Si votre clavier n'a pas de touche de raccourci, essayez d'appuyer sur Ctrl + ScrollLock.
N'hésitez pas à utiliser fréquemment les fonctions MsgBox lorsque vous déboguez votre code. Assurez-vous simplement de les supprimer après avoir identifié et corrigé le problème.
Insertion d'un débogage. Instructions d'impression
Au lieu d'utiliser des fonctions MsgBox dans votre code, vous pouvez insérer un ou plusieurs débogages temporaires. Imprimer les déclarations. Utilisez ces instructions pour imprimer la valeur d'une ou de plusieurs variables dans la fenêtre Exécution. Voici un exemple qui affiche les valeurs de trois variables:
Debug. Imprimer LoopIndex, CellCount, MyVal
Notez que les variables sont séparées par des virgules. Vous pouvez afficher autant de variables que vous le souhaitez avec un seul débogage. Imprimer la déclaration.
Débogage. Imprimer envoie la sortie à la fenêtre Exécution même si cette fenêtre est masquée. Si la fenêtre Immédiate de VBE n'est pas visible, appuyez sur Ctrl + G (ou choisissez Affichage → Fenêtre Immédiate). Voici quelques résultats dans la fenêtre Exécution.
Contrairement à MsgBox, déboguer. Les instructions d'impression n'arrêtent pas votre code. Vous devez donc surveiller la fenêtre Exécution pour voir ce qui se passe.
Après avoir débogué votre code, assurez-vous de supprimer tout le débogage. Imprimer les déclarations. Même les grandes entreprises comme Microsoft oublient parfois de supprimer leur débogage. Imprimer les déclarations. Dans plusieurs versions précédentes d'Excel, chaque fois que le complément Analysis ToolPak était ouvert, vous voyiez plusieurs messages étranges dans la fenêtre Exécution. Ce problème a finalement été corrigé dans Excel 2007.
Utilisation du débogueur VBA
Les concepteurs d'Excel connaissent parfaitement le concept de bogues. Par conséquent, Excel inclut un ensemble d'outils de débogage qui peuvent vous aider à corriger les problèmes dans votre code VBA.
