VBA sur erreur GoTo - Types d'instructions On Error dans VBA

Table des matières

Excel VBA sur erreur GoTo

Les erreurs font partie intégrante de tout langage de codage, et les macros VBA ne sont pas différentes de cela. À mon avis, trouver pourquoi l'erreur se produit représente 90% du travail effectué, et 10% réside dans la façon de corriger cette erreur. Dans chaque langage de codage, les codeurs utilisent leur propre façon de gérer les erreurs dans leur codage, nous utilisons également dans le codage VBA. Souvent, nous devons ignorer l'erreur, ou souvent nous pouvons vouloir aller à des choses spécifiques lorsque l'erreur se produit. «On Error» est l'instruction que nous devons utiliser dans VBA pour gérer les erreurs.

Cette déclaration a trois types d'instructions, et ci-dessous sont la liste.

  1. En cas d'erreur Goto 0
  2. En cas d'erreur Goto (étiquette)
  3. En cas d'erreur Reprendre suivant

Dans cet article, nous verrons comment ces trois instructions sont utilisées dans le codage VBA pour gérer toute sorte d'erreurs.

Comment utiliser VBA sur les déclarations d'erreur?

# 1 - En cas d'erreur, reprendre ensuite

Comme le dit l'instruction elle-même, «On Error Resume Next» signifie chaque fois que l'erreur se produit dans le code «reprendre» la ligne suivante du code en ignorant le code de ligne d'erreur. Jetez maintenant un œil au code ci-dessous.

Dans le code ci-dessous, j'ai mentionné les noms des feuilles de calcul et j'ai demandé à entrer la valeur dans la première cellule en tant que "Test d'erreur".

Code:

Sub On_Error_Resume_Next () Worksheets ("Ws 1"). Sélectionnez Range ("A1"). Value = "Error Testing" Worksheets ("Ws 2"). Sélectionnez Range ("A1"). Value = "Error Testing" Worksheets ( "Ws 3"). Sélectionnez la plage ("A1"). Valeur = Feuilles de calcul "Test d'erreur" ("Ws 4"). Sélectionnez la plage ("A1"). Valeur = "Test d'erreur" End Sub

J'ai maintenant les feuilles de calcul ci-dessous dans mon classeur.

  • Je vais exécuter le code et voir ce qui se passe.
  • Nous avons eu l'erreur "Indice hors plage", cliquez sur "Déboguer" pour voir dans quelle ligne nous avons eu l'erreur.
  • Donc, dans la ligne «Feuilles de travail (« Ws 3 ») .Sélectionnez», nous avons eu une erreur. En effet, dans notre classeur, il n'y a pas de feuille de calcul nommée «Ws 3», donc rencontré une erreur.

Dans de tels cas, nous pouvons vouloir ignorer l'erreur et reprendre l'exécution du code à la ligne suivante. C'est là qu'intervient notre gestionnaire d'erreurs «On Error Resume Next».

  • Tout ce que nous avons à faire est d'ajouter la ligne «On Error Resume Next» au début de la macro.

Exécutez maintenant ce code et il n'affichera aucun message d'erreur car chaque fois que le code rencontre une erreur, il ignorera l'erreur et reviendra à la ligne de code suivante.

# 2 - Sur erreur GoTo 0

Ce n'est pas un gestionnaire d'erreurs mais plutôt un activateur de message d'erreur après avoir désactivé le message d'erreur à l'aide de l'instruction «On Error Resume Next».

Une fois que vous utilisez l'instruction «Resume Next», les macros VBA commencent à ignorer tout type d'erreur qui se produit et continuent à passer à la ligne de codes suivante. Mais nous ne voulons pas que cela se produise tout le temps car certaines erreurs que nous devons ignorer intentionnellement, d'autres nous avons besoin d'une notification.

Si un ensemble spécifique de code génère une erreur dans ce bloc de code, nous devons seulement ignorer les erreurs dans d'autres parties du code. Nous ne voulons pas ignorer l'erreur.

  • Regardez l'image ci-dessous pour l'utilisation de l'instruction «On Error GoTo 0».

Alors maintenant, les erreurs seront ignorées jusqu'à ce que le code trouve l'activateur de notification d'erreur «On Error GoTo 0» une fois que cette ligne de code exécute les macros à la normale et commence à lancer des messages d'erreur comme d'habitude.

# 3 - Étiquette GoTo en cas d'erreur

Nous avons vu comment ignorer l'erreur et comment réactiver la notification d'erreur. Maintenant, en utilisant cette méthode, nous pouvons accéder à une ligne de code spécifique.

Dans cette méthode, «Label» signifie que nous pouvons donner n'importe quel nom à cette étiquette, et la même étiquette doit également être donnée à la ligne de code requise.

Par exemple, regardez le même code de l'exemple ci-dessus.

Maintenant, exécutons le code ligne par ligne en appuyant sur la touche de fonction F8.

Maintenant, la macro lira l'instruction du gestionnaire d'erreurs; appuyez sur la touche F8 pour exécuter les 2 premiers codes de feuille de calcul.

Maintenant, la macro est sur le point d'exécuter le troisième code de feuille de calcul, qui ne figure pas dans le classeur, appuyez sur la touche F8 et voyez ce qui se passe.

Étant donné que la macro a rencontré une erreur dans la ligne de code ci-dessous, elle est passée à l'étiquette du gestionnaire d'erreurs "ErrorMessage", qui a été décrite par le biais de l'instruction "On Error GoTo (Label)".

À présent, la boîte de message affichera le message «Une erreur s'est produite et la sortie de la macro».

Choses dont il faut se rappeler

  • Vba On Error GoTo 0 activera à nouveau la notification d'erreur, alors n'oubliez pas de l'ajouter après avoir fourni un gestionnaire d'erreurs.
  • Vous devez être absolument sûr de la partie du code dans laquelle vous souhaitez ignorer l'erreur, alors n'incluez le gestionnaire d'erreurs que pour ce bloc de code.

Articles intéressants...