Sous-marin de sortie VBA

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 () '...' Some code here '... Exit Sub' Quitter le Sub sans exécuter d'autres lignes de code ci-dessous '...' Ce code sera ignoré '... End Sub 

Exemples

Vous pouvez télécharger ce modèle VBA Exit Sub Excel ici - Modèle VBA Exit Sub Excel

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.

Pour cela, je vais devoir 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 à faire tourner 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, il quittera directement toute la procédure secondaire uniquement.

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 

Comme nous le savons, nous ne pouvons diviser aucun nombre par zéro. Donc, si nous essayons de le faire, nous obtiendrons l'erreur comme Erreur d'exécution '11': Division par zéro.

Pour éviter cela dès que nous rencontrons une erreur, je mentionnerai ma macro pour quitter la sous-procédure avec effet immédiat. Le code ci-dessous est un de ces cas.

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 

Dans l'exemple ci-dessus, j'ai mentionné l'instruction «On Error Goto ErrorHandler». Ici, le mot ErrorHandler est l'étiquette que j'ai attribuée. Si vous pouvez voir au bas du code, j'ai mentionné l'étiquette comme

ErrorHandler: Quitter Sub 

Ainsi, dès que le code rencontre une erreur, il poussera le code pour sauter à l'étiquette et l'étiquette a l'instruction «Exit Sub», donc quittera la sous-procédure.

Maintenant, je vais exécuter le code, il calculera la division jusqu'à ce qu'il trouve une erreur.

Comme vous pouvez le voir dans la cellule C7, il a rencontré une erreur en tant que «Division par zéro» et a donc quitté la sous-procédure. Sans informer l'utilisateur, quitter la sous-procédure est toujours une chose dangereuse. Pour informer l'utilisateur de l'erreur, nous pouvons inclure une petite boîte de message.

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 " Une erreur s'est produite et l'erreur est: "& 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.