Gestion des erreurs dans Excel VBA
nous examinerons ci-dessous à deux programmes dans Excel VBA. Un programme ignore simplement des erreurs. L’autre programme continue l’exécution à une ligne spécifiée à frapper une erreur.
Situation:
Les deux programmes calculent la racine carrée du nombre.
Racine carrée 1 Ajouter les lignes de code suivantes au bouton de commande « Racine carrée 1 ».
-
Tout d’abord, nous déclarons deux objets Range. Nous appelons les objets Range RNG et la cellule.
Dim rng As Range, cell As Range
-
Nous initialisons l’objet Range RNG avec la plage sélectionnée.
Set rng = Selection
-
Nous voulons calculer la racine carrée de chaque cellule dans une plage sélectionnée au hasard (cette gamme peut être de toute taille). Dans Excel VBA, vous pouvez utiliser la boucle For Each suivante pour cela. Ajoutez les lignes de code suivantes:
For Each cell In rng Next cell
Note: RNG et cellules sont choisies au hasard ici, vous pouvez utiliser tous les noms.
N’oubliez pas de se référer à ces noms dans le reste de votre code.
-
Ajoutez la ligne de code suivant à la boucle.
On Error Resume Next
-
Ensuite, on calcule la racine carrée d’une valeur. Dans Excel VBA, nous pouvons utiliser la fonction Sqr pour cela. Ajoutez la ligne de code suivant à la boucle.
cell.Value = Sqr(cell.Value)
-
Quittez l’éditeur Visual Basic et tester le programme.
Résultat:
Conclusion: Excel VBA a ignoré les cellules contenant des valeurs non valides telles que les numéros de négatifs et le texte. Sans utiliser le « On Error Resume Next » déclaration que vous obtenez deux erreurs. Veillez à utiliser uniquement le « On Error Resume Next » déclaration lorsque vous vous ignorez les erreurs est OK.
Racine carrée 2 Ajouter les lignes de code suivantes au bouton de commande « Racine carrée 2 ».
-
Le même programme que Racine carrée 1 mais remplacer « On Error Resume Next » avec:
On Error GoTo InvalidValue:
Note: InvalidValue est choisi au hasard ici, vous pouvez utiliser un nom.
N’oubliez pas de se référer à ce nom dans le reste de votre code.
-
En dehors de la boucle For Each suivante, ajoutez d’abord la ligne de code suivant:
Exit Sub
Sans cette ligne, le reste du code (code d’erreur) sera exécutée, même s’il n’y a pas d’erreur! 3. Excel VBA poursuit son exécution à la ligne commençant par « InvalidValue: » après avoir heurté une erreur (ne pas oublier le côlon). Ajoutez la ligne de code suivant:
InvalidValue:
-
Nous gardons notre simple code d’erreur pour l’instant. Nous affichons un MsgBox avec un texte et l’adresse de la cellule où l’erreur est survenue.
MsgBox "can't calculate square root at cell " & cell.Address
-
Ajoutez la ligne suivante pour indiquer VBA Excel pour reprendre l’exécution après l’exécution du code d’erreur.
Resume Next
-
Quittez l’éditeur Visual Basic et tester le programme.
Résultat: