VBA sur erreur GoTo

Excel VBA sur erreur GoTo

Les erreurs font partie intégrante de tout langage de codage et les macros VBA n'en sont pas différentes. À 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 de 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 de déclarations et ci-dessous sont la liste.

  1. En cas d'erreur Goto 0
  2. En cas d'erreur Aller à [é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?

Vous pouvez télécharger ce modèle de déclaration VBA On Error GoTo ici - Modèle de déclaration VBA On Error GoTo

# 1 - En cas d'erreur, reprendre ensuite

Comme le dit la déclaration 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 la 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 = "Ws 3"). Sélectionnez Range ("A1"). Value = Feuilles de travail "Test d'erreur" ("Ws 4"). Sélectionnez Range ("A1"). Value = "Error Testing" End Sub 

Maintenant, j'ai ci-dessous les feuilles de calcul 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, c'est parce que 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à que notre gestionnaire d'erreurs «On Error Resume Next» entre en scène.

  • 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

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

Lorsque 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 ignorer l'erreur 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 le code d'activation 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 - En cas d'erreur GoTo Label

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'erreur «ErrorMessage» qui a été décrite par l'instruction «On Error GoTo [Label]».

Maintenant, la boîte de message affichera le message comme "Erreur survenue et sortie de la macro".

Choses à retenir

  • 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.