VBA Exit Sub - Quitter la sous-procédure VBA si les conditions ne sont pas remplies

Sous-procédure de sortie Excel VBA

L' instruction Exit Sub quitte la sous-procédure avant les lignes définies des codes VBA. Cependant, pour quitter la sous-procédure, nous devons appliquer une sorte de test logique.

Construisons cela en termes simples.

Sub MacroName () '…' Un peu de code ici '… Exit Sub' Quitte le Sub sans exécuter d'autres lignes de code ci-dessous '…' Ce code sera ignoré '… End Sub

Exemples

Exemple 1

Pour un meilleur exemple, regardez le code ci-dessous.

Code:

Sub Exit_Example1 () Dim k As Long For k = 1 To 10 Cells (k, 1) .Value = k Next k End Sub

Le code ci-dessus insérera les numéros de série de 1 à 10 dans les cellules A1 à A10.

Maintenant, je veux insérer seulement 5 numéros de série, et dès que la valeur de la variable «k» devient 6, je veux quitter le sous.

Je devrai ajouter le test logique dans Excel comme IF k = 6 Then Exit Sub .

Code:

Sub Exit_Example1 () Dim k As Long For k = 1 To 10 If k = 6 Then Exit Sub 'Dès que la valeur k devient 6, il ignorera tous les codes et quittera Cells (k, 1) .Value = k Next k End Sous

Exécutez maintenant le code ligne par ligne. Appuyez sur la touche F8 pour démarrer la procédure.

À partir de maintenant, la valeur k est zéro.

Pour changer la valeur k à 1, appuyez une fois de plus sur la touche F8.

Donc, la valeur k est 1, notre code continue de fonctionner et insérera 1 dans la cellule A1. Comme ça, continuez à exécuter la boucle jusqu'à ce que la valeur de k devienne 6.

Maintenant, la valeur de k est 6, et la ligne de code est sur le point d'exécuter notre test logique pour quitter la sous-procédure. Si j'appuie une fois de plus sur la touche F8, la procédure secondaire sera exécutée directement.

Comme nous pouvons le voir, il a mis en évidence le mot «Exit Sub». En appuyant sur la touche F8, il quittera la sous-procédure sans passer par le mot «End Sub».

Exemple # 2 - En cas d'erreur, quittez la sous-procédure

Nous pouvons également quitter la sous-procédure lorsque nous obtenons les valeurs d'erreur. Par exemple, considérez les données ci-dessous pour diviser le nombre 1 du nombre 2.

Voici le code pour obtenir la division de deux nombres.

Code:

Sub Exit_Example2 () Dim k As Long For k = 2 To 9 Cells (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k End Sub

As we know, we cannot divide any number by zero. So if we attempt to do that, we will get the error as Run Time Error ‘11’: Division By Zero.

To avoid this as soon as we encounter any error, I will mention my macro to exit the subprocedure with immediate effect. The below code is one such case.

Code:

Sub Exit_Example2() Dim k As Long For k = 2 To 9 On Error GoTo ErrorHandler Cells(k, 3).Value = Cells(k, 1).Value / Cells(k, 2).Value Next k ErrorHandler: Exit Sub End Sub

In the above example, I have mentioned the statement “On Error Goto ErrorHandler.” Here the word ErrorHandler is the label I have assigned. If you can see at the bottom of the code, I have mentioned the brand as

ErrorHandler: Exit Sub

As soon as code encounters an error, it will push code to jump to the label, and the brand has the “Exit Sub” statement so that it will exit the subprocedure.

Now I will run the code; it will calculate the division until it finds an error.

As you can see in the cell C7, it has encountered an error as “Division by Zero,” so it has exit the subprocedure. Without informing the user exiting the subprocedure is always a dangerous thing. To notify the user of the error, we can include one small message box.

Code:

Sub Exit_Example2() Dim k As Long For k = 2 To 9 On Error GoTo ErrorHandler Cells(k, 3).Value = Cells(k, 1).Value / Cells(k, 2).Value Next k ErrorHandler: MsgBox "Error has Occured and the error is:" & vbNewLine & Err.Description Exit Sub End Sub

Le code ci-dessus affichera le message d'erreur puis quittera la sous-procédure. Lors de l'exécution du code, si une erreur se produit, il affichera la boîte de message dans VBA comme ci-dessous.

C'est plus un moyen fiable de quitter la procédure secondaire.

Articles intéressants...