VBA sur erreur Goto 0

Excel VBA en cas d'erreur Goto 0

VBA On Error GoTo 0 est une instruction de gestionnaire d'erreurs utilisée pour désactiver le gestionnaire d'erreurs activé dans la procédure. Il est appelé «Error Handler Disabler».

La gestion des erreurs dans l'un des langages de programmation est une classe de maître que tous les codeurs doivent comprendre. Le langage de programmation VBA aussi, et nous avons également des techniques de gestion des erreurs dans ce langage de programmation. «On Error Resume Next» active le gestionnaire d'erreurs et «On Error GoTo 0» désactivera le gestionnaire d'erreurs activé.

Les deux «On Error Resume Next» et «On Error GoTo 0» sont des paires qui doivent être utilisées en tandem pour l'efficacité du code. Pour gérer l'erreur, nous devons commencer par l'instruction «On Error Resume Next» et pour terminer ce gestionnaire d'erreurs, nous devons utiliser l'instruction «On Error GoTo 0».

Tout code de ligne écrit entre ces instructions ignorera tout type d'erreur survenu au cours de la procédure.

Comment utiliser l'instruction On Error GoTo 0?

Vous pouvez télécharger ce modèle Excel VBA On Error Goto 0 ici - Modèle Excel VBA On Error Goto 0

Pour un exemple, regardez le code ci-dessous.

Code:

 Sub On_ErrorExample1 () Worksheets ("Sheet1"). Sélectionnez Range ("A1"). Value = 100 Worksheets ("Sheet2"). Sélectionnez Range ("A1"). Value = 100 End Sub 

Ce que fait le code ci-dessus, c'est qu'il sélectionne d'abord la feuille de calcul nommée «Sheet1» et dans la cellule A1, il insère la valeur 100.

Code:

Feuilles de calcul ("Sheet1"). Sélectionnez Plage ("A1"). Valeur = 100

Ensuite, il sélectionnera la feuille de calcul nommée «Sheet2» et insérera la même valeur.

Code:

Feuilles de calcul ("Sheet2"). Sélectionnez Plage ("A1"). Valeur = 100

Maintenant, j'ai des feuilles ci-dessous dans mon classeur.

Il n'y a pas de feuilles appelées «Sheet1» et «Sheet2», lorsque nous exécutons le code, il rencontrera une erreur comme celle ci-dessous.

Puisqu'il n'y a pas de feuille nommée «Sheet1», il a rencontré une erreur «Indice hors limites». Pour gérer cette erreur, j'ajouterai une instruction de gestionnaire d'erreur «On Error Resume Next» en haut de la macro.

Code:

 Sub On_ErrorExample1 () On Error Resume Next Worksheets ("Sheet1"). Sélectionnez Range ("A1"). Value = 100 Worksheets ("Sheet2"). Sélectionnez Range ("A1"). Value = 100 End Sub 

Maintenant, exécutez le code et voyez ce qui se passe.

Il ne donnera aucun message d'erreur car l'instruction du gestionnaire d' erreurs On Error Resume Next est activée.

Imaginez le scénario où nous devons ignorer l'erreur en cas de non-disponibilité de la feuille de calcul «Sheet1» mais nous devons notifier s'il n'y a pas de feuille de calcul appelée «Sheet2».

Depuis que nous avons ajouté On Error Resume Next en haut, il a commencé à gérer l'erreur, mais en même temps, nous devons spécifier le nombre de lignes dont nous devons ignorer cette erreur.

Dans cet exemple, nous devons simplement ignorer l'erreur pour la première feuille de calcul, mais pour la deuxième feuille, nous avons besoin que l'erreur se produise s'il n'y a pas de feuille de calcul «Sheet2». Ainsi, après le premier code de feuille de calcul, ajoute la ligne de désactivation d'erreur On Error GoTo 0.

Code:

 Sub On_ErrorExample1 () On Error Resume Next Worksheets ("Sheet1"). Sélectionnez Range ("A1"). Value = 100 On Error GoTo 0 Worksheets ("Sheet2"). Sélectionnez Range ("A1"). Value = 100 End Sub 

Exécutez maintenant le code ligne par ligne pour voir l'impact en appuyant sur la touche F8.

Maintenant, si vous appuyez une fois sur la touche F8, l'exécution du code passera à la ligne suivante et la tâche de ligne active sera exécutée. Maintenant, la ligne active (ligne jaune) est le gestionnaire d'erreurs «On Error Resume Next» et le gestionnaire d'erreurs sera activé.

Maintenant, toute erreur se produit, elle sera ignorée jusqu'à ce qu'il exécute le gestionnaire d'erreurs désactive le code « On Error GoTo 0 ».

Dans la tentative précédente, nous avons rencontré des erreurs mais appuyez une fois de plus sur la touche F8 et voyez la magie.

Sans donner aucune sorte d'erreur, il a repris l'exécution du code même s'il n'y a pas de feuille de calcul «Sheet2» à sélectionner. Appuyez à nouveau sur F8.

Puisqu'il n'y avait pas de feuille Sheet1, il ne peut pas insérer la valeur dans la cellule A1 en tant que 500, mais ce qu'il fait, c'est qu'il insère la valeur de 500 dans la cellule A1, quelle que soit la feuille de calcul active. Ma feuille active lorsque j'exécute le code était «Sheet3», donc la valeur de 100 est insérée dans la cellule A1.

Maintenant, la ligne de code active est « On Error GoTo 0 », en appuyant sur la touche F8, cette tâche de ligne sera exécutée.

Puisque «On Error GoTo 0» est exécuté, il a arrêté le processus de gestion des erreurs et recommence à afficher les erreurs le cas échéant. Appuyez sur la touche F8 et voyez l'erreur.

Dans le cas précédent sans On Error GoTo 0, il a également ignoré cette erreur, mais depuis que nous avons ajouté un désactivateur de gestionnaire d'erreurs, il a recommencé à afficher l'erreur.

Choses à retenir ici

  • À la fois On Error Resume Next et On Error GoTo 0 doit être utilisé comme « Error Handler Enabler » et « Error Handler Disabler ».
  • Toute ligne de code entre ces deux instructions rencontre une erreur, elle sera ignorée.
  • S'il existe une instruction On Error GoTo 0, le gestionnaire d'erreurs de sous-procédure sera désactivé après la sortie.