Στο VBA, μπορείτε να βγείτε από ένα δευτερεύον ή μια λειτουργία, χρησιμοποιώντας το Έξοδος Sub ή Λειτουργία εξόδου εντολές.
1 | Έξοδος Sub |
1 | Λειτουργία εξόδου |
Όταν φτάσει η εκτέλεση του κώδικα Έξοδος Sub ή Λειτουργία εξόδου, θα εξέλθει από ένα Sub ή μια λειτουργία και θα συνεχίσει με οποιαδήποτε άλλη εκτέλεση κώδικα.
Εάν θέλετε να μάθετε πώς να εξέρχεστε από ένα σφάλμα Sub on Error, κάντε κλικ σε αυτόν τον σύνδεσμο: VBA On Error Exit Sub
Εάν θέλετε να μάθετε πώς να τερματίζετε ολόκληρη την εκτέλεση κώδικα, κάντε κλικ σε αυτόν τον σύνδεσμο: VBA End
Έξοδος από ένα Sub στο VBA
Θα δείτε στο παράδειγμα τι συμβαίνει όταν χρησιμοποιούμε το Έξοδος Sub εντολή σε ένα Sub. Δημιουργήσαμε ένα Sub ExitSub, το οποίο έχει το Έξοδος Sub εντολή μέσα. Ο ΥπεύθυνοςCallExitSub καλεί αυτό το Υπο. Εδώ είναι ο κωδικός:
123456789101112131415161718 | Private Sub ExitSub ()Dim i As IntegerΓια i = 1 έως 10Αν i = 5 ΤότεΈξοδος SubMsgBox "Η τιμή του i είναι" & iΤέλος εανΕπόμενο iΤέλος υποPrivate Sub CallExitSub ()Καλέστε το ExitSubMsgBox "Exit Sub"Τέλος υπο |
Στο ExitSub, εισάγουμε πρώτα το For Loop εάν η τιμή i είναι μικρότερη από 10:
123 | Για i = 1 έως 10Επόμενο i |
Μετά από αυτό ελέγχουμε αν η τιμή i είναι ίση με 5, χρησιμοποιώντας την εντολή If. Εάν η τιμή είναι 5, θέλουμε να βγούμε από το Sub και να επιστρέψουμε το πλαίσιο Μηνύματος με την τιμή i:
1234 | Αν i = 5 ΤότεΈξοδος SubMsgBox "Η τιμή του i είναι" & iΤέλος εαν |
Εάν η συνθήκη δεν πληρούται, η ακόλουθη πρόταση αυξάνει το i κατά 1 και εισέρχεται ξανά στον βρόχο For:
1 | Επόμενο i |
Στο CallExitSub, καλούμε πρώτα το Sub ExitSub:
1 | Κλήση ExitSub |
Στη συνέχεια επιστρέφουμε το πλαίσιο μηνυμάτων:
1 | MsgBox "Exit Sub" |
Εάν τρέχετε το CallExitSub, θα καλέσει πρώτα το ExitSubΤο Εάν εκτελέσετε αυτόν τον κώδικα στη λειτουργία εντοπισμού σφαλμάτων, θα δείτε ότι θα περάσει από τον βρόχο 5 φορές. Στο 5ου επανάληψη, η τιμή της μεταβλητής i γίνεται 5 και ο κωδικός εισέρχεται στο σώμα If. Τώρα το Sub ExitSub εξέρχεται και επιστρέφεται στο CallExitSubΤο Η επόμενη γραμμή είναι MsgBox "Exit Sub":
Όπως μπορείτε να δείτε, το ExitSub εξέρχεται αμέσως μετά Έξοδος Sub εντολή, άρα το MsgBox "Η τιμή του i είναι" & i δεν θα εκτελεστεί ποτέ.
Έξοδος από μια λειτουργία στο VBA
Η έξοδος από μια λειτουργία στο VBA είναι παρόμοια με την έξοδο από ένα Sub, απλώς η εντολή είναι Λειτουργία εξόδουΤο Στο παράδειγμα, δημιουργήσαμε το ExitFunc που επιστρέφει έναν ακέραιο. Ο Υπεύθυνος CallExitFunction καλεί αυτήν τη συνάρτηση. Εδώ είναι ο κωδικός:
1234567891011121314151617181920 | Ιδιωτική λειτουργία ExitFunc () ως ακέραιοςDim i As IntegerΓια i = 1 έως 10Αν i = 5 ΤότεExitFunc = iΛειτουργία εξόδουΤέλος εανΕπόμενο iΛειτουργία ΤέλουςPrivate Sub CallExitFunction ()Dim intFunc As IntegerintFunc = ExitFunction ()MsgBox "Η τιμή του intFunc είναι" & intFuncΤέλος υπο |
Στο ExitFunc, εισάγουμε πρώτα το For Loop εάν η τιμή i είναι μικρότερη από 10:
123 | Για i = 1 έως 10Επόμενο i |
Μετά από αυτό ελέγχουμε αν η τιμή i είναι ίση με 5, χρησιμοποιώντας την εντολή If. Εάν η τιμή είναι 5, εκχωρούμε την τιμή i στο αποτέλεσμα συνάρτησης και εξέρχομαι από τη συνάρτηση:
1234 | Αν i = 5 ΤότεExitFunc = iΛειτουργία εξόδουΤέλος εαν |
Εάν η συνθήκη δεν πληρούται, η ακόλουθη πρόταση αυξάνει το i κατά 1 και εισέρχεται ξανά στον βρόχο For:
1 | Επόμενο i |
Στο CallExitFunction, καλούμε πρώτα τη συνάρτηση ExitFunc: Για να γίνει αυτό πρέπει να δηλώσουμε τη μεταβλητή intFunc πληκτρολογήστε ακέραιο και αντιστοιχίστε το αποτέλεσμα του ExitFunc λειτουργεί σε αυτό:
123 | Dim intFunc As IntegerintFunc = ExitFunction () |
Μετά από αυτό επιστρέφουμε το πλαίσιο μηνυμάτων με την τιμή του intFunc:
1 | MsgBox "Η τιμή του intFunc είναι" & intFunc |
Εάν τρέχετε το CallExitFunction, θα καλέσει πρώτα τη συνάρτηση ExitFuncΤο Εάν εκτελέσετε αυτόν τον κώδικα στη λειτουργία εντοπισμού σφαλμάτων, θα δείτε ότι θα περάσει από τον βρόχο 5 φορές. Στο 5ου επανάληψη, η τιμή της μεταβλητής i γίνεται 5 και ο κωδικός εισέρχεται στο σώμα If. Τώρα η αξία του ExitFunc γίνεται i και η συνάρτηση εξέρχεται και επιστρέφεται στο CallExitFunctionΤο Η επόμενη γραμμή είναι MsgBox "Η τιμή του intFunc είναι" & intFunc: