En VBA, vous pouvez quitter un sous ou une fonction, en utilisant le Quitter le sous ou Fonction de sortie commandes.
1 | Quitter le sous |
1 | Fonction de sortie |
Lorsque l'exécution du code vient à Quitter le sous ou Fonction de sortie, il quittera une sous-fonction ou une fonction et continuera avec toute autre exécution de code.
Si vous voulez savoir comment quitter un Sub en cas d'erreur, cliquez sur ce lien : VBA On Error Exit Sub
Si vous voulez savoir comment terminer une exécution de code entier, cliquez sur ce lien : VBA End
Quitter un sous en VBA
Vous verrez sur l'exemple ce qui se passe quand on utilise le Quitter le sous commande dans un Sub. Nous avons créé un sous QuitterSous, qui a le Quitter le sous commande à l'intérieur. Le sousAppelSortieSous appelle ce sous. Voici le code :
123456789101112131415161718 | Sous-Sous-Exit Privé()Diminuer en tant qu'entierPour i = 1 à 10Si je = 5 AlorsQuitter le sousMsgBox "La valeur de i est" & iFin siEnsuite jeFin du sous-marinSous-appel privéExitSub()Appeler ExitSubMsgBox "Quitter le sous-marin"Fin du sous-marin |
Dans le QuitterSous, nous entrons d'abord dans la boucle For si la valeur de i est inférieure à 10 :
123 | Pour i = 1 à 10Ensuite je |
Après cela, nous vérifions si la valeur de i est égale à 5, en utilisant la commande If. Si la valeur est 5, nous voulons quitter le Sub et renvoyer la boîte de message avec la valeur i :
1234 | Si je = 5 AlorsQuitter le sousMsgBox "La valeur de i est" & iFin si |
Si la condition n'est pas remplie, l'instruction suivante augmente i de 1 et entre à nouveau dans la boucle For :
1 | Ensuite je |
Dans le AppelSortieSous, nous appelons d'abord le Sub QuitterSous:
1 | Appeler ExitSub |
Après cela, nous retournons la boîte de message :
1 | MsgBox "Quitter le sous-marin" |
Si vous exécutez le AppelSortieSous, il appellera d'abord le QuitterSous. Si vous exécutez ce code en mode débogage, vous verrez qu'il parcourra la boucle 5 fois. Dans le 5e itération, la valeur de la variable i devient 5 et le code entre dans le corps If. Maintenant le sous QuitterSous est sorti et retourné au AppelSortieSous. La ligne suivante est MsgBox « Quitter le sous-marin »:
Comme vous pouvez le voir, le QuitterSous est quitté juste après Quitter le sous commande, donc le MsgBox "La valeur de i est" & i ne sera jamais exécuté.
Quitter une fonction en VBA
Quitter une fonction dans VBA est similaire à quitter un Sub, juste la commande est Fonction de sortie. Dans l'exemple, nous avons créé le ExitFunc qui renvoie un entier. le sous Fonction d'appelSortie appelle cette fonction. Voici le code :
1234567891011121314151617181920 | Fonction privée ExitFunc() en tant qu'entierDiminuer en tant qu'entierPour i = 1 à 10Si je = 5 AlorsExitFunc = iFonction de sortieFin siEnsuite jeFonction de finPrivate Sub CallExitFunction()Dim intFunc en tant qu'entierintFunc = ExitFunction()MsgBox "La valeur de intFunc est " & intFuncFin du sous-marin |
Dans le ExitFunc, nous entrons d'abord dans la boucle For si la valeur de i est inférieure à 10 :
123 | Pour i = 1 à 10Ensuite je |
Après cela, nous vérifions si la valeur de i est égale à 5, en utilisant la commande If. Si la valeur est 5, nous attribuons la valeur de i au résultat de la fonction et sortons de la fonction :
1234 | Si je = 5 AlorsExitFunc = iFonction de sortieFin si |
Si la condition n'est pas remplie, l'instruction suivante augmente i de 1 et entre à nouveau dans la boucle For :
1 | Ensuite je |
Dans le Fonction d'appelSortie, on appelle d'abord la fonction ExitFunc: Pour ce faire, nous devons déclarer la variable intFunc tapez entier et attribuez le résultat de la ExitFunc fonction :
123 | Dim intFunc en tant qu'entierintFunc = ExitFunction() |
Après cela, nous retournons la boîte de message avec la valeur de intFunc:
1 | MsgBox "La valeur de intFunc est " & intFunc |
Si vous exécutez le Fonction d'appelSortie, il appellera d'abord la fonction ExitFunc. Si vous exécutez ce code en mode débogage, vous verrez qu'il parcourra la boucle 5 fois. Dans le 5e itération, la valeur de la variable i devient 5 et le code entre dans le corps If. Maintenant, la valeur du ExitFunc devient i et la fonction est quittée et renvoyée au Fonction d'appelSortie. La ligne suivante est MsgBox "La valeur de intFunc est " & intFunc: