VBA en cas d'erreur

VBA On Error est une méthode simple pour gérer les exceptions inattendues dans les macros Excel. On sait que nous ne pouvons pas écrire de code sans aucune erreur. Parfois, l'écriture de gros code peut nous donner l'erreur même au moment de la compilation. Pour éviter ce genre de situation, nous ajoutons Message d'erreur qui au lieu de nous donner la bonne réponse ou le code d'erreur, il nous montrera le message avec le code d'erreur. Il semblerait que nous ayons obtenu la sortie de notre calcul, mais c'est le code d'erreur qui sera imprimé.

Comment utiliser Excel VBA sur une déclaration d'erreur dans Excel?

Il existe 3 façons d'erreur dans VBA. Comprenons différentes manières avec quelques exemples.

Exemple 1

Le premier type d'erreur est une erreur de compilation de code qui survient lorsqu'un code contient des variables non déclarées ou impossibles. Pour mieux comprendre, nous utiliserons une expression mathématique simple de la fracture. Pour cela, allez dans le menu Insertion de VBA et sélectionnez Module comme indiqué ci-dessous.

Ouvrez maintenant la sous-catégorie et ajoutez n'importe quel nom. Comme nous utilisons On Error, nous avons nommé le même.

 Sub OnError () End Sub 

Définissez maintenant 2 ou 3 entiers. Ici, nous avons pris X et Y comme entiers.

 Sub OnError () Dim X comme entier, Y comme entier, Z comme entier End Sub 

Maintenant, comme discuté ci-dessus, nous calculerons l'expression mathématique de division. Pour X, nous mettrons un caractère dans Numérateur et le diviserons 0. Et Y sera 20/2, ce qui est des nombres complets.

 Sub OnError () Dim X As Integer, Y As Integer X = Test / 0 Y = 20/2 End Sub 

Exécutez maintenant le code en utilisant la touche F5 ou en cliquant sur le bouton de lecture comme indiqué ci-dessous. Nous obtiendrons l'erreur d'exécution 6, qui indique l'erreur Texte sur numéro.

Maintenant, pour annuler cette erreur, nous allons ajouter une ligne lors de la reprise de l'erreur suivante avant d'écrire le code mathématique. Il sautera le code d'erreur mais nous ne pourrons pas voir le résultat du deuxième code mathématique. Cela ne masque le message d'erreur que si différentes lignes de codes, comme indiqué ci-dessous. Maintenant, essayez également d'exécuter le code.

 Sub OnError () Dim X en tant qu'entier, Y en tant qu'entier en cas d'erreur Reprendre Suivant X = Test / 0 Y = 20/2 MsgBox X MsgBox Y End Sub 

Maintenant, pour annuler cette erreur, nous allons ajouter une ligne lors de la reprise de l'erreur suivante avant d'écrire le code mathématique. Il sautera le code d'erreur mais nous ne pourrons pas voir le résultat du deuxième code mathématique. Cela ne masque le message d'erreur que si différentes lignes de codes, comme indiqué ci-dessous. Maintenant, essayez également d'exécuter le code.

Exemple # 2

Dans cet exemple, nous considérerons cette division mathématique qui donne un résultat infini mais en codant, ce sera le résultat # DIV / 0. Pour le démontrer, nous considérerons un autre entier Z avec X et Y dans la sous-catégorie comme indiqué ci-dessous.

 Sub OnError () Dim X comme entier, Y comme entier, Z comme entier End Sub 

Maintenant, encadrez tous les entiers X, Y et Z avec une expression mathématique de division et pour l'imprimer, utilisez la fonction MsgBox en VBA du résultat de chaque entier.

Ci-dessous pour Integer X, nous avons divisé 10 par 0, 20 par 2 et 30 par 4.

 Sub OnError () Dim X As Integer, Y As Integer, Z As Integer X = 10/0 O = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Exécutez maintenant le code à l'aide de la touche F5 ou manuellement comme indiqué ci-dessous.

Comme nous pouvons le voir dans la capture d'écran ci-dessus Erreur d'exécution 11, ce qui signifie que l'erreur est liée au nombre. Maintenant, pour surmonter cela, ajoutez une ligne en cas de reprise d'erreur avant l'expression mathématique comme indiqué ci-dessous.

 Sub OnError () Dim X As Integer, Y As Integer, Z As Integer On Error Resume Next X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Maintenant, si nous exécutons le code, nous obtiendrons zéro pour le premier entier X et pour Y et Z, nous obtiendrons les réponses de division respectives comme indiqué ci-dessous.

Exemple # 3

Le deuxième type d'erreur apparaît lorsque nous saisissons une entrée de données incorrecte dans le code. Pour cela, nous considérerons 3 entiers X, Y et Z en ouvrant la sous-catégorie dans VBA comme indiqué ci-dessous.

 Sub OnError () Dim X comme entier, Y comme entier, Z comme entier End Sub 

Considérons maintenant également la même division mathématique que celle que nous avons vue dans l'exemple ci-dessus.

 Sub OnError () Dim X As Integer, Y As Integer, Z As Integer X = 10/0 O = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Si nous exécutons le code, nous obtiendrons le même message d'erreur d'erreur d'exécution 11.

Maintenant, pour annuler cette erreur, utilisez le texte On Error GoTo avec le mot "" Result to skip error message and get the output that works fine as shown below.

 Sub OnError () Dim X As Integer, Y As Integer, Z As Integer On Error GoTo ZResult: X = 10/0 Y = 20/2 ZResult: Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Exécutez à nouveau le code. Nous obtiendrons le même résultat que l'exemple précédent.

En cas d'erreur, GoTo ZResult nous aide à sauter directement l'entier du point de résultat mentionné comme nous l'avons fait pour l'entier Z.

Exemple # 4

Dans le troisième type d'erreur lorsque nous exécutons le code et que VBA n'est pas en mesure de comprendre la ligne de code. Cela peut être fait à l'aide du code On Error Resume Next avec MsgBox Err.Number . Tenez compte des mêmes données que celles utilisées dans les exemples ci-dessus. Nous verrons à nouveau les mêmes 3 entiers X, Y et Z comme indiqué ci-dessous.

 Sub OnError () Dim X comme entier, Y comme entier, Z comme entier End Sub 

Et pour imprimer la sortie du résultat, autorisez les boîtes de message pour tous les entiers comme sortie.

 Sub OnError () Dim X As Integer, Y As Integer, Z As Integer X = 10/0 O = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Maintenant, si nous exécutons le code complet, nous obtiendrons un message d'erreur d'erreur mathématique Erreur d'exécution 11.

Maintenant, pour annuler cette erreur, nous utiliserons On Error Resume Next.

 Sub OnError () Dim X As Integer, Y As Integer, Z As Integer On Error Resume Next X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Et exécutez le code. Cela donnera un résultat d'utilisation sur une ligne mathématique valide comme indiqué ci-dessous.

Ajoutez maintenant la ligne de code ZResult avant l'expression mathématique de division entière Z et ajoutez la ligne de code MsgBox Err.Number à la fin du code, comme indiqué ci-dessous.

 Sub OnError () Dim X As Integer, Y As Integer, Z As Integer On Error Resume Next X = 10/0 Y = 20/2 Z Résultat: Z = 30/4 MsgBox X MsgBox Y MsgBox Z MsgBox Err.Number End Sub 

Exécutez maintenant le code en utilisant la touche F5 ou en appuyant sur le bouton de lecture comme indiqué ci-dessous.

Comme nous pouvons le voir dans les captures d'écran ci-dessus. La première boîte de message a 0, ce qui annule une expression mathématique incorrecte. 2 nd et 3 rd ont un résultat de division d'entiers Y et Z. Et la dernière boîte de message a le code d'erreur d'exécution 11 qui est probablement le code d'erreur des expressions de division de X entier.

Avantages de VBA en cas d'erreur

  • Nous pouvons calculer n'importe quelle formule mathématique même si elle est incorrecte.
  • Pour les structures de codage plus grandes où il y a des chances ou une erreur, l'utilisation de ces méthodes peut donner un résultat correct même parmi la ligne de codes.
  • Cela donne un meilleur résultat par rapport au résultat obtenu à partir de calculs Excel normaux.

Choses dont il faut se rappeler

  • Enregistrez toujours le fichier dans un fichier Excel compatible macro afin que nous puissions utiliser le code VBA créé plusieurs fois.
  • Compilez toujours le code écrit avant de l'implémenter avec toute exigence Excel.
  • Si nécessaire, attribuez le code écrit à n'importe quel bouton afin que nous puissions rapidement cliquer sur le bouton et exécuter le code.

Vous pouvez télécharger ce modèle Excel VBA sur erreur ici - Modèle VBA sur erreur Excel

Articles recommandés

Cela a été un guide pour Excel VBA en cas d'erreur. Ici, nous avons discuté de la façon d'utiliser VBA On Error Statement ainsi que des exemples pratiques et un modèle Excel téléchargeable. Vous pouvez également consulter nos autres articles suggérés -

  1. Comment utiliser la fonction VBA TRIM?
  2. Format numérique en VBA
  3. Guide de la boucle Excel VBA Do While
  4. Comment utiliser la fonction de recherche VBA?

Catégorie: