Comment ignorer les erreurs à l'aide de VBA On Error Resume Next Statement?

Excel VBA en cas d'erreur Reprise suivant

VBA On Error Resume Next est une instruction de gestionnaire d'erreurs. Si l'erreur se produit lors de l'exécution du code au lieu d'afficher une erreur pour reprendre la ligne de code suivante en ignorant le message d'erreur, vous pouvez utiliser cette instruction.

Ceux qui écrivent régulièrement des codes dans Excel VBA savent qu'ils peuvent obtenir des erreurs même après avoir écrit des codes compétents, mais ils veulent ignorer cette erreur et continuer à fonctionner avec les lignes de code suivantes. Un exemple typique d'obtention d'un message d'erreur est lorsque la fonction de feuille de calcul VLOOKUP ne trouve pas la valeur de recherche dans le tableau de table. Il ne retournera pas d'erreur # N / A; plutôt, cela jettera l'erreur. Comme "Impossible d'obtenir la propriété VLOOKUP de la classe de fonctions de feuille de calcul."

Si vous ne savez pas pourquoi nous obtenons cette erreur, il est très difficile de corriger le bogue. Dans VBA, nous avons une fonctionnalité appelée " Reprise après erreur ".

Que fait On Error Resume Next dans VBA?

Il existe certains domaines en tant que codeur. Nous saurons avec certitude que cela donnera un message d'erreur, mais nous devons ignorer cette erreur pour continuer à parcourir le code, alors comment ignorer cette erreur est le doute courant que tout le monde a.

En utilisant l'instruction VBA On Error Resume Next, nous pouvons ignorer l'erreur et reprendre la ligne de code suivante.

Exemple 1

Supposons que vous disposiez de nombreuses feuilles de calcul et que vous en masquiez certaines dans le cadre du projet VBA. Par exemple, voici les feuilles de calcul que j'ai dans ma feuille de calcul.

J'ai écrit des codes pour masquer les feuilles «Ventes et« Profit », et ci-dessous se trouve le code.

Code:

Sub On_Error () Worksheets ("Sales"). Visible = xlVeryHidden Worksheets ("Profit 2019"). Visible = xlVeryHidden Worksheets ("Profit"). Visible = xlVeryHidden End Sub

Maintenant, je vais commencer à exécuter le code ligne par ligne en utilisant la touche F8 .

Si j'appuie une fois de plus sur la touche F8 , la feuille intitulée « Ventes » sera masquée .

Appuyez maintenant une fois de plus sur la touche F8 et voyez ce qui se passe.

Nous avons une erreur «Indice hors plage» car la ligne de code actuelle indique ce qui suit.

Feuilles de calcul ("Profit 2019"). Visible = xlVeryHidden

Il tente de masquer la feuille de calcul nommée « Profit 2019 », mais il n'y a pas de feuille de calcul portant le nom de «Profit 2019».

Dans ces cas, si la feuille de calcul n'existe pas dans le classeur, nous devons ignorer l'erreur et continuer à exécuter le code en ignorant l'erreur «Indice hors limites».

La ligne suivante du code dit

Feuilles de calcul ("Profit"). Visible = xlVeryHidden

Cette feuille de calcul existe dans ce classeur, donc sans ignorer l'erreur, nous ne pouvons pas passer à cette ligne de code.

Pour ignorer cette erreur, nous devons ajouter l'instruction «On Error Resume Next».

Code:

Sub On_Error () On Error Resume Next Worksheets ("Sales"). Visible = xlVeryHidden Worksheets ("Profit 2019"). Visible = xlVeryHidden Worksheets ("Profit"). Visible = xlVeryHidden End Sub

Comme vous pouvez le voir ci-dessus, j'ai ajouté l'instruction en haut du code avant le début de l'une des lignes. Maintenant, exécutez le code et voyez ce qui se passe.

Maintenant, je suis dans la ligne qui a reçu l'erreur précédemment, appuyez sur la touche F8 et voyez ce qui se passe.

J'ai sauté à la ligne de code suivante sans afficher aucune erreur à cause de l'instruction que nous avons ajoutée en haut, qui est l'instruction VBA «On Error Resume Next».

Exemple # 2

Nous allons maintenant voir comment utiliser cette instruction avec un autre exemple. Regardez la structure de données ci-dessous pour cet exemple.

Nous avons deux tableaux au-dessus du premier tableau qui ont Emp Name et leurs détails de salaire dans le deuxième tableau, et nous n'avons que Emp Name, donc en utilisant RECHERCHEV, nous devons récupérer les détails de salaire dans le tableau de gauche.

Voici le code que j'avais écrit pour récupérer les détails.

Code:

Sub On_Error1 () Dim k As Long For k = 2 To 8 Cells (k, 6) .Value = WorksheetFunction.VLookup (Cells (k, 5), Range ("A: B"), 2, 0) Next k End Sous

Maintenant, exécutez le code ligne par ligne et voyez ce qui se passe.

Lors de l'exécution du premier code de cellule, nous avons le résultat pour le premier employé. Répétez la même chose pour le deuxième employé également.

Cette fois, nous avons le message d'erreur. Regardons le nom du deuxième employé dans le tableau.

The second employee name is “Gayathri,” but this name doesn’t not exists in the first table, so the VBA VLOOKUP function doesn’t return “#N/A” error when the VLOOKUP doesn’t find the lookup value from the table; rather, it gives the above error message.

Our aim is if the employee name doesn’t find in the table, then we need an empty cell for that employee and ignore the error and give results for the remaining names.

We need to add the “On Error Resume Next” statement inside the loop.

Code:

Sub On_Error1() Dim k As Long For k = 2 To 8 On Error Resume Next Cells(k, 6).Value = WorksheetFunction.VLookup(Cells(k, 5), Range("A:B"), 2, 0) Next k End Sub

Now run the code and see the result.

Deux noms d'employés, « Gayathri & Karanveer » , ne figurent pas dans la liste. Par conséquent, ces codes de ligne doivent avoir rencontré une erreur car nous avons ajouté une instruction de gestionnaire d'erreurs « On Error Resume Next ». Il a ignoré cette ligne de code et repris pour le prochain employé.

Choses à retenir ici

  • «On Error Resume Next» est l'instruction du gestionnaire d'erreur lorsque nous devons ignorer l'erreur connue.
  • Si vous souhaitez ignorer le message d'erreur uniquement pour un ensemble de code spécifique, fermez l'instruction suivante en cas d'erreur en ajoutant l'instruction « On Error GoTo 0 ».

Articles intéressants...