VBA en cas d'erreur reprendre Suivant - Exemples de VBA en cas de reprise d'erreur Suivant

Table des matières:

Anonim

Excel VBA en cas de reprise d'erreur

La gestion des erreurs est un mécanisme très utile et significatif pour les langages de programmation comme le contrôle ou la prévention des erreurs VBA, qui est un aspect de la gestion des erreurs, ce qui signifie prendre des mesures efficaces et significatives à l'intérieur d'un script VBA pour éviter l'occurrence d'un message contextuel d'erreur. L'instruction Excel VBA On Error Resume Next ignore la ligne de code qui provoque une erreur et continue ou achemine l'exécution vers la ligne suivante après la ligne à l'origine de l'erreur.

REMARQUE: sur l'instruction Error Resume Next ne résout pas les erreurs d'exécution, c'est une erreur qui ignore où l'exécution du programme VB continuera à partir de la ligne qui a provoqué l'erreur d'exécution.

Fondamentalement, En cas d'erreur, reprendre ensuite est utilisé lorsque vous souhaitez ignorer l'erreur et continuer ou reprendre l'exécution du code dans la cellule suivante.

Types d'erreurs dans VBA

Voici les différents types d'erreurs dans VBA:

  1. Erreur de syntaxe ou erreur d'analyse.
  2. Erreur de compilation ou de compilation.
  3. Erreur d'exécution.
  4. Erreur logique.

Les erreurs ci-dessus peuvent être corrigées à l'aide du débogage et des déclarations «en cas d'erreur» dans un code. L'erreur d'exécution peut être évitée à l'aide de la reprise sur erreur suivante.

Erreur d'exécution VBA:

Avant l'explication de On Error Resume Next, vous devez être conscient d'une erreur d'exécution lorsque des instructions mathématiques ou des termes impossibles sont présents dans une instruction, puis cette erreur d'exécution se produit.

Exemples d'Excel VBA en cas de reprise d'erreur Suivant

Voici les différents exemples de reprise sur erreur suivante dans Excel VBA:

Vous pouvez télécharger ce modèle Excel suivant de reprise VBA en cas d'erreur ici - Modèle Excel suivant de reprise VBA en cas d'erreur

VBA en cas de reprise d'erreur - Exemple # 1

Ici, une erreur sera ignorée et l'exécution du code se poursuivra. Dans l'exemple mentionné ci-dessous, 6 ne peut pas être divisé par zéro, si vous l'exécutez sans entrer l'instruction On Error Resume Next, l'erreur d'exécution mentionnée ci-dessous se produit.

Code:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Si On Error Resume Next est entré en haut du code après l'instruction SUB, il ignore l'erreur d'exécution et passe à l'instruction suivante, entraîne une sortie de 6/2 (boîte de message contextuelle avec le résultat).

Code:

 Sub RUNTIME_2 () On Error Resume Next MsgBox 6/0 MsgBox 6/2 End Sub 

VBA en cas de reprise d'erreur - Exemple # 2

Je peux utiliser On Error Resume Next n'importe où dans le code du début à la fin. Dans l'exemple ci-dessous, je dois faire un calcul de 3, c'est-à-dire

9/3 =?

9/0 =?

9/2 =?

Dans l'exemple mentionné ci-dessus, vous pouvez observer un deuxième calcul où aucun nombre ne peut être divisé par zéro, c'est-à-dire que 9 ne peut pas être divisé par zéro dans la deuxième étape. Supposons que si vous exécutez la macro sans entrer dans l'instruction On Error Resume Next, je peux maintenant exécuter le code étape par étape à l'aide de l'étape dans ou de la touche F8 pour comprendre comment cela fonctionne.

Maintenant, j'exécute le code ci-dessus, en cliquant sur l'option étape par étape ou la touche F8 fréquemment, étape par étape. Je viens de copier le code ci-dessus et de commencer à l'exécuter étape par étape, pour la première étape du message de calcul, la boîte 3 apparaît.

Code:

 Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub 

Lorsque j'exécute la deuxième ligne de code, l'erreur d'exécution mentionnée ci-dessous se produit à la deuxième étape d'un code, où aucun nombre ne peut être divisé par zéro, c'est-à-dire que 9 ne peut pas être divisé par zéro à la deuxième étape.

Code:

 Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub 

Maintenant, si je clique même sur le débogage, cela ne peut pas aller plus loin, où cela m'amènera à la deuxième ligne de code (il est mis en surbrillance en jaune), où je dois faire la correction. Donc, ici, si vous cliquez sur l'option Step Into ou la touche F8, le troisième calcul de ce code ne sera pas exécuté.

Pour corriger ou gérer cette erreur d'exécution, je dois utiliser ou exécuter l' instruction OnError Resume Next au-dessus d'un deuxième code ou au début du code sous la sous-déclaration. afin qu'il saute cette ligne de code et passe à la troisième étape du code et calcule la valeur.

Code:

 Sub RUNTIME_30 () MsgBox 9/3 On Error Resume Next MsgBox 9/0 MsgBox 9/2 End Sub 

OU

 Sub RUNTIME_31 () On Error Resume Next MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub 

Maintenant, j'ai ajouté sur error resume next statement au code, où vous pouvez utiliser l'un des codes ci-dessus, si vous l'exécutez étape par étape, vous obtiendrez une fenêtre contextuelle à deux messages, l'un est le premier code de sortie et le troisième code calcul. On Error Resume Next ignorera l'erreur d'exécution dans le deuxième code et passera au troisième code.

VBA en cas de reprise d'erreur - Exemple # 2

Nous allons maintenant voir la combinaison de On Error Resume Next avec Error GoTo 0. Dans le code ci-dessous, il ignorera les erreurs jusqu'à ce qu'il atteigne l'instruction On Error GoTo 0 . Après l'instruction On Error GoTo 0, le code revient en arrière ou passe à la vérification d'erreur normale et déclenche l'erreur attendue.

Code:

 Sub onError_Go_to_0_with_Resume_next () On Error Resume Next Kill "C: TempFile.exe" On Error GoTo 0 Range ("A1"). Value = 100 / "PETER" End Sub 

Lorsque j'exécute le code ci-dessus, il présente l'erreur de division, c'est-à-dire la non-concordance de type (la valeur numérique ne peut pas être divisée par le texte).

Maintenant, vous pouvez enregistrer votre classeur en tant que «classeur compatible avec les macros Excel». En cliquant sur Enregistrer sous dans le coin gauche de la feuille de calcul.

lorsque vous ouvrez à nouveau ce fichier Excel, vous pouvez utiliser la touche de raccourci mentionnée ci-dessous, c'est-à-dire

Fonction + Alt + F11 raccourci clavier vous aide à accéder à tout le code macro créé du classeur. Fonction + Alt + F8 raccourci clavier vous aide à ouvrir une fenêtre de boîte de dialogue «Macro», qui contient tous les noms de macro, où vous pouvez exécuter un code de macro spécifique de votre choix.

Choses dont il faut se rappeler

  • L'erreur d'exécution sera silencieusement interceptée et stockée dans l'objet Err global
  • On Error Resume Next empêche généralement une interruption de l'exécution du code.
  • Les propriétés des objets d'erreur (Err Object) sont effacées automatiquement lorsque Resume Next est utilisé dans une routine de gestion des erreurs

Articles recommandés

Ceci est un guide pour VBA en cas de reprise après erreur. Ici, nous discutons différents types d'erreur dans VBA Excel ainsi que des exemples pratiques et un modèle Excel téléchargeable. Vous pouvez également consulter nos autres articles suggérés -

  1. Guide complet des macros VBA
  2. VBA DateDiff (exemples avec modèle Excel)
  3. Comment utiliser la recherche d'objectifs dans VBA?
  4. Feuille de protection VBA avec syntaxe
  5. VBA Environ