Accueil Médias sociaux Comment utiliser l'instruction OnError dans Excel 2016 VBA - dummies

Comment utiliser l'instruction OnError dans Excel 2016 VBA - dummies

Table des matières:

Vidéo: Excel VBA - Debugging 2025

Vidéo: Excel VBA - Debugging 2025
Anonim

Lorsque vous avez besoin d'erreurs dans Excel VBA, vous pouvez utiliser l'instruction OnError. Cependant, il y a quelques choses que vous devez savoir en premier. Vous pouvez utiliser l'instruction On Error de trois façons.

Syntaxe Ce qu'elle fait
On Error GoTo label Après l'exécution de cette instruction, VBA reprend l'exécution de l'instruction

suivant le libellé spécifié. Vous devez inclure un deux-points

après l'étiquette afin que VBA le reconnaisse comme une étiquette.

On Error GoTo 0 Après l'exécution de cette instruction, VBA reprend son comportement normal de vérification des erreurs

. Utilisez cette instruction après avoir utilisé l'une des autres instructions On Error

ou lorsque vous souhaitez supprimer le traitement des erreurs

dans votre procédure.

A la reprise de l'erreur Suivant Après l'exécution de cette instruction, VBA ignore simplement toutes les erreurs

et reprend l'exécution avec l'instruction suivante.

Reprise après une erreur

Dans certains cas, vous voulez simplement que la routine se termine normalement lorsqu'une erreur survient. Par exemple, vous pouvez afficher un message décrivant l'erreur, puis quitter la procédure. (L'exemple EnterSquareRoot5 montré plus haut utilise cette technique.) Dans d'autres cas, vous voulez récupérer de l'erreur, si possible.

Pour récupérer une erreur, vous devez utiliser une instruction Resume. Cela efface la condition d'erreur et vous permet de continuer l'exécution à un emplacement donné. Vous pouvez utiliser l'instruction Resume de trois façons.

Syntaxe Description
Reprendre L'exécution reprend avec l'instruction à l'origine de l'erreur. Utilisez

si votre code de gestion des erreurs corrige le problème et

que vous pouvez continuer.

Resume Next L'exécution reprend avec l'instruction qui suit immédiatement l'instruction

qui a provoqué l'erreur. Cela ignore essentiellement l'erreur

.

Reprendre l'étiquette L'exécution reprend à l'étiquette que vous spécifiez.

L'exemple suivant utilise une instruction Resume après qu'une erreur survienne:

Sub EnterSquareRoot6 () Dim Num As Variant Dim Msg As String Dim Ans As Integer TryAgain: 'Configurer la gestion des erreurs lors de l'erreur GoTo BadEntry 'Invite pour une valeur Num = InputBox ("Entrer une valeur") Si Num = "" Alors Exit Sub' Insère la racine carrée ActiveCell. Valeur = Sqr (Num) Exit Sub BadEntry: Msg = Err. Number & ":" & Error (Numéro d'erreur) Msg = Msg & vbNewLine & vbNewLine Msg = Msg & "Assurez-vous qu'une plage est sélectionnée", Msg = Msg & "la feuille n'est pas protégée", Msg = Msg & "et vous entrez une valeur non négative. "Msg = Msg & vbNewLine & vbNewLine &" Essayez encore? "Ans = MsgBox (Msg, vbYesNo + vbCritical) Si Ans = vbYes alors Reprendre TryAgain End Sub

Cette procédure a une autre étiquette: TryAgain.Si une erreur se produit, l'exécution continue sur l'étiquette BadEntry et le code affiche le message ci-dessous. Si l'utilisateur répond en cliquant sur Oui, l'instruction Resume se déclenche et l'exécution revient à l'étiquette TryAgain. Si l'utilisateur clique sur Non, la procédure se termine.

Si une erreur se produit, l'utilisateur peut décider d'essayer à nouveau.

Notez que le message d'erreur inclut également le numéro de l'erreur, ainsi que la description de l'erreur "officielle".

L'instruction Resume efface la condition d'erreur avant de continuer. Pour voir cela, essayez de substituer l'instruction suivante pour l'avant-dernière instruction dans l'exemple précédent:

Si Ans = vbYes Then GoTo TryAgain

Le code ne fonctionne pas correctement si vous utilisez GoTo plutôt que Resume. Pour démontrer, entrez un nombre négatif. Vous obtenez l'invite d'erreur. Cliquez sur Oui pour réessayer, puis entrez un autre nombre négatif . Cette deuxième erreur n'est pas interceptée car la condition d'erreur d'origine n'a pas été effacée.

Traitement des erreurs en un rien de temps

Pour vous aider à gérer parfaitement toutes ces erreurs, voici un résumé rapide et corrélé. Un bloc de code de gestion d'erreur a les caractéristiques suivantes:

  • Il commence immédiatement après l'étiquette spécifiée dans l'instruction On Error.

  • Il devrait être atteint par votre macro seulement si une erreur se produit. Cela signifie que vous devez utiliser une instruction telle que Exit Sub ou Exit Function immédiatement avant l'étiquette.

  • Il peut nécessiter une instruction de reprise. Si vous choisissez de ne pas abandonner la procédure lorsqu'une erreur se produit, vous devez exécuter une instruction Resume avant de revenir au code principal.

Savoir quand ignorer les erreurs

Dans certains cas, il est parfaitement possible d'ignorer les erreurs. C'est à ce moment que l'instruction On Error Resume Next entre en jeu.

L'exemple suivant parcourt chaque cellule de la plage sélectionnée et convertit la valeur en racine carrée. Cette procédure génère un message d'erreur si une cellule de la sélection contient un nombre ou un texte négatif:

Sub SelectionSqrt () Dim cellule As Range Si TypeName (Sélection) <> "range" Puis Quitter Sub Pour chaque cellule Dans la cellule Selection. Value = Sqr (cell. Value) Cellule suivante End Sub

Dans ce cas, vous pouvez simplement ignorer toute cellule contenant une valeur que vous ne pouvez pas convertir en racine carrée. Vous pouvez créer toutes sortes de capacités de vérification d'erreurs en utilisant les structures If-Then, mais vous pouvez concevoir une meilleure solution (et plus simple) en ignorant simplement les erreurs qui se produisent.

La routine suivante accomplit ceci en utilisant l'instruction On Error Resume Next:

Sub SelectionSqrt () Dim cellule As Range si TypeName (Selection) <> "range" Puis Exit Sub On Error Resume Suivant Pour chaque cellule En sélection cellule. Value = Sqr (cell. Value) Cellule suivante End Sub

En général, vous pouvez utiliser une instruction On Error Resume Next si vous considérez que les erreurs sont inoffensives ou sans conséquence pour votre tâche.

Comment utiliser l'instruction OnError dans Excel 2016 VBA - dummies

Le choix des éditeurs

Comment adapter les normes journalistiques aux blogs de maman - Les nuls

Comment adapter les normes journalistiques aux blogs de maman - Les nuls

Alors que les standards journalistiques sont légèrement différents Diffusion, et les organisations en ligne, ils partagent des éléments communs de véracité, la précision, l'objectivité, l'impartialité, l'équité et la responsabilité publique (c'est une citation adaptée de Wikipedia). Surtout, les standards journalistiques établissent une séparation entre les départements qui génèrent des revenus (ventes de publicité et de sponsoring) et les départements qui développent ...

Comment accepter les commentaires des membres de la communauté en ligne - mannequins

Comment accepter les commentaires des membres de la communauté en ligne - mannequins

Comme gestionnaire de communauté en ligne, vous ne pouvez pas avoir peur pour demander des commentaires parce que vous ne voulez pas entendre de mauvaises nouvelles. La réalité est qu'il n'y a pas de mauvaises réactions. Pourtant, lorsque les commentaires négatifs viennent, parfois vous ne pouvez pas vous empêcher de le prendre personnellement. Vous passez tellement de temps à cultiver votre communauté et à promouvoir ...

Comment ajouter NoFollow Tag - mannequins

Comment ajouter NoFollow Tag - mannequins

La balise NoFollow a été créée comme un moyen de divulguer aux moteurs de recherche que, bien que votre site de blogging maman ajoute un lien vers une destination particulière, il n'approuve pas le site de destination. Initialement utilisé pour les commentaires de blog pour lutter contre les spams de commentaires, il protégeait les blogs de se connecter par inadvertance aux ...

Le choix des éditeurs

Ce qu'il faut faire et ne pas faire pour vos tableaux de bord et rapports Excel - les nuls

Ce qu'il faut faire et ne pas faire pour vos tableaux de bord et rapports Excel - les nuls

Les concepts les plus courants utilisés dans les tableaux de bord et les rapports Excel sont le concept de tendances. Une tendance est une mesure de la variance sur un intervalle défini, généralement des périodes telles que des jours, des mois ou des années. Mais construire des composants tendance pour vos tableaux de bord a quelques choses à faire et à ne pas faire. Utilisez les types de graphiques appropriés pour ...

Emplacements de confiance et macros Excel - mannequins

Emplacements de confiance et macros Excel - mannequins

Si l'idée d'un message Macro Excel à venir (même une fois) désorganise vous, configurez un emplacement de confiance pour vos fichiers. Un emplacement approuvé est un répertoire considéré comme une zone sûre dans laquelle seuls les classeurs approuvés sont placés. Un emplacement de confiance vous permet, à vous et à vos clients, d'exécuter un classeur compatible avec les ...

Transformez une colonne de données en deux dans Excel 2016 - des nuls

Transformez une colonne de données en deux dans Excel 2016 - des nuls

Dans une feuille Excel 2016 que vous devez transformer une colonne de données en deux colonnes. Dans le cas des noms, par exemple, il peut être nécessaire de transformer une colonne de noms en deux colonnes, l'une appelée prénom et l'autre nom de famille. Suivez ces étapes dans un fichier Excel ...

Le choix des éditeurs

Dix domaines à couvrir avec les fournisseurs d'entrepôts de données - les nuls

Dix domaines à couvrir avec les fournisseurs d'entrepôts de données - les nuls

Sont dix domaines que vous devriez Discutez avec n'importe quel fournisseur de produits d'entreposage de données, quelle que soit la catégorie de produit (outil d'aide à la décision, outil de middleware ou SGBDR, par exemple) que vous envisagez d'acheter. Il y a aussi une question spécifique que vous pourriez vouloir poser. Toutes ces questions sont quelque peu bizarres car elles ont peu à voir avec ...

L'avenir des entrepôts de données à l'ère du Big Data - mannequins

L'avenir des entrepôts de données à l'ère du Big Data - mannequins

Commencé à changer et à évoluer avec l'avènement du Big Data. Dans le passé, il n'était tout simplement pas rentable pour les entreprises de stocker l'énorme quantité de données provenant d'un grand nombre de systèmes d'enregistrement. Le manque d'architectures de calcul réparties rentables et pratiques a fait que les données ...

Les catégories principales de Business Intelligence - les nuls

Les catégories principales de Business Intelligence - les nuls

Au début de votre projet d'entreposage de données, ne vous concentrez pas sur le type d'outils dont vous avez besoin - pour le moment. Au lieu de cela, concentrez-vous sur les types de questions que les utilisateurs poseront concernant le contenu de l'entrepôt de données, les types de rapports qui seront exécutés et à quelles fins, et les modèles généraux de traitement qui ...