Erreur d'ignorance VBA

Ce didacticiel montrera comment s'assurer que VBA ignore une erreur lors de l'exécution de votre code.

Parfois, lorsque vous construisez du code VBA, vous souhaitez en fait que VBA ignore une ligne de code lorsqu'une erreur se produit. Cela peut en fait être très utile si, par exemple, vous souhaitez supprimer une feuille si elle existe, mais ignorez cette ligne de code si la feuille n'existe pas.

(Consultez notre Guide de gestion des erreurs pour plus d'informations sur les erreurs VBA)

En cas d'erreur Reprendre ensuite

Pour ignorer une ligne de code dans une procédure, on utilise le En cas d'erreur Reprendre ensuite déclaration.

123456 Sous-TestErrorIgnore()En cas d'erreur Reprendre ensuiteActiveWorkbook.Sheets("Sheet4").selectActiveSheet.Delete'plus de code iciFin du sous-marin

Dans l'exemple ci-dessus, un En cas d'erreur Reprendre ensuite déclaration a été placée en haut de la procédure. Le code est ensuite construit pour sélectionner Sheet4, puis le supprimer.

Cependant, en raison de la En cas d'erreur Reprendre ensuite instruction, si le code ne trouve pas Sheet4, il passera simplement à la ligne suivante et supprimera la feuille active qu'il trouvera.

Cela peut être assez dangereux si vous souhaitez supprimer uniquement la feuille 4 et pas uniquement la feuille active. Pour éviter cette erreur, nous pouvons définir une variable sur la feuille 4 et supprimer uniquement cette feuille SI elle existe.

1234567 Sub TestErrorIgnore()Dim ws As Feuille de calculEn cas d'erreur Reprendre ensuiteDéfinir ws = ActiveWorkbook.Sheets("Sheet4")ws.Supprimer'plus de code iciFin du sous-marin

Maintenant, lorsque le code est exécuté, seul Sheet4 sera supprimé SI Sheet4 existe réellement. Si la feuille 4 n'existe pas, VBA ignorera l'erreur et continuera.

Un autre exemple de ceci est si vous souhaitez supprimer toutes les feuilles de votre classeur à l'aide d'une boucle. Comme un classeur Excel doit avoir au moins une feuille, le code supprimera toutes les feuilles sauf une.

123456 Sous-feuilles de suppression()Dim ws As Feuille de calculPour chaque ws dans ActiveWorkbook.Sheetsws.SupprimerWS suivantFin du sous-marin

Le code ci-dessus s'arrêtera avec une erreur.

En cliquant Déboguer nous emmènera dans le code avec la ligne incriminée en surbrillance !

Cependant, en ajoutant le En cas d'erreur Reprendre ensuite ligne au code empêchera l'erreur et la routine laissera toujours une feuille dans le classeur.

12345678 Sous-feuilles de suppression()'ajouter une ligne d'erreur iciEn cas d'erreur Reprendre ensuiteDim ws As Feuille de calculPour chaque ws dans ActiveWorkbook.Sheetsws.SupprimerWS suivantFin du sous-marin

En cas d'erreur GoTo 0

Souvent si vous utilisez En cas d'erreur Reprendre ensuite pour ignorer une erreur, vous souhaitez intercepter les erreurs plus tard dans le code ou vous souhaitez que votre code cesse de s'exécuter si une erreur se produit à l'avenir. Nous pouvons réinitialiser la gestion des erreurs afin que le code s'arrête à nouveau en cas d'erreur en ajoutant la ligne On Error GoTo 0.

12345678 Sub TestErrorIgnore()Dim ws As Feuille de calculEn cas d'erreur Reprendre ensuiteDéfinir ws = ActiveWorkbook.Sheets("Sheet4")ws.SupprimerEn cas d'erreur GoTo 0'plus de code iciFin du sous-marin

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave