VBA sur erreur Goto 0 - Comment utiliser une erreur GoTo 0 dans Excel VBA?

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 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?

Par 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

J'ai maintenant les 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 ci-dessous.

Comme 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 avons besoin pour ignorer cette erreur.

Dans cet exemple, nous devons simplement ignorer l'erreur pour la première feuille de calcul mais à partir de 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 passe à 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. Il sera ignoré jusqu'à ce qu'il exécute le gestionnaire d'erreurs désactive l' instruction de code « On Error GoTo 0 ».

Lors de la tentative précédente, nous avons rencontré des erreurs, mais appuyez à nouveau sur la touche F8 et voyez la magie.

Without giving any kind of error, it has resumed execution of the code even though there is not worksheet “Sheet2” to select. Now press F8 again.

Since there was no Sheet1, it cannot insert the value in the A1 cell as 500 but what it does is it will insert the value of 500 to cell A1 whichever worksheet is active. My active sheet when I am executing the code was “Sheet3”, so the value of 100 is inserted to the cell A1.

Now the active line of code is “On Error GoTo 0” by pressing the F8 key. This line task will be executed.

Since “On Error GoTo 0” is executed, it has stopped the process of error handling and again starts to show errors if any occurs. Press the F8 key and see the error.

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 doivent être utilisés 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.

Articles intéressants...