VBA Έξοδος Sub - Έξοδος από τη διαδικασία VBA εάν δεν πληρούνται οι προϋποθέσεις

Πίνακας περιεχομένων

Διαδικασία εξόδου Excel VBA

Η δήλωση Exit Sub βγαίνει από την υποδικασία νωρίτερα από τις καθορισμένες γραμμές των κωδικών VBA. Ωστόσο, για να βγούμε από την υποδιαδικασία πρέπει να εφαρμόσουμε κάποιο λογικό τεστ.

Ας κατασκευάσουμε αυτό με απλούς όρους.

Sub MacroName () '…' Ορισμένος κωδικός εδώ '… Έξοδος Sub' Έξοδος από το Sub χωρίς να εκτελούνται περαιτέρω γραμμές κώδικα παρακάτω '…' Αυτός ο κωδικός θα αγνοηθεί '

Παραδείγματα

Παράδειγμα # 1

Για ένα καλύτερο παράδειγμα, ανατρέξτε στον παρακάτω κώδικα.

Κώδικας:

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

Ο παραπάνω κωδικός θα εισαγάγει σειριακούς αριθμούς από 1 έως 10 στα κελιά A1 έως A10.

Τώρα θέλω να εισαγάγω μόνο 5 σειριακούς αριθμούς, και μόλις η τιμή της μεταβλητής "k" γίνει 6, θέλω να βγείτε από το δευτερεύον.

Θα πρέπει να προσθέσω το λογικό τεστ στο excel ως IF k = 6 Έπειτα το Exit Sub .

Κώδικας:

Sub Exit_Example1 () Dim k As Long For k = 1 to 10 If k = 6 Στη συνέχεια, Exit Sub 'Μόλις η τιμή k γίνει 6, θα αγνοήσει όλους τους κωδικούς και θα βγεί από τα κελιά (k, 1). Τιμή = k Επόμενο k Τέλος Υπο

Τώρα εκτελέστε τον κωδικό γραμμή προς γραμμή. Πατήστε το πλήκτρο F8 για να ξεκινήσετε τη διαδικασία.

Από τώρα, η τιμή k είναι μηδέν.

Για να αλλάξετε την τιμή k σε 1, πατήστε ξανά το πλήκτρο F8.

Έτσι, η τιμή k είναι 1, ο κώδικάς μας συνεχίζει να τρέχει και θα εισάγει 1 στο κελί A1. Έτσι, συνεχίστε να τρέχετε το βρόχο έως ότου η τιμή του k γίνει 6.

Τώρα η τιμή του k είναι 6 και η γραμμή κώδικα πρόκειται να εκτελέσει τη λογική δοκιμή μας για έξοδο από την υποδιαδικασία. Εάν πατήσω για άλλη μια φορά το πλήκτρο F8, θα ακολουθήσει ευθεία ολόκληρη τη διαδικασία.

Όπως μπορούμε να δούμε, έχει επισημάνει τη λέξη "Exit Sub." Με το πάτημα του πλήκτρου F8, θα βγει από την υποδιαδικασία χωρίς να μεταβεί στη λέξη "End Sub".

Παράδειγμα # 2 - Σφάλμα κατά την έξοδο από τη δευτερεύουσα διαδικασία

Μπορούμε επίσης να βγούμε από την υποδιαδικασία όταν λάβουμε τις τιμές σφάλματος. Για παράδειγμα, εξετάστε τα παρακάτω δεδομένα για τη διαίρεση του αριθμού1 από τον αριθμό 2.

Παρακάτω είναι ο κωδικός για να λάβετε τη διαίρεση δύο αριθμών.

Κώδικας:

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

Όπως γνωρίζουμε, δεν μπορούμε να διαιρέσουμε κανέναν αριθμό με μηδέν. Έτσι, αν προσπαθήσουμε να το κάνουμε αυτό, θα λάβουμε το σφάλμα ως Run Time Error '11': Division By Zero.

Για να το αποφύγω αυτό μόλις συναντήσουμε οποιοδήποτε σφάλμα, θα αναφέρω τη μακροεντολή μου για έξοδο από την υποδιαδικασία με άμεσο αποτέλεσμα. Ο παρακάτω κώδικας είναι μια τέτοια περίπτωση.

Κώδικας:

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 Τέλος Υποτ

Στο παραπάνω παράδειγμα, ανέφερα τη δήλωση "On Error Goto ErrorHandler." Εδώ η λέξη ErrorHandler είναι η ετικέτα που έχω εκχωρήσει. Εάν μπορείτε να δείτε στο κάτω μέρος του κώδικα, έχω αναφέρει την επωνυμία ως

ErrorHandler: Έξοδος Sub

Μόλις ο κώδικας συναντήσει ένα σφάλμα, θα ωθήσει τον κώδικα για να μεταβεί στην ετικέτα και η επωνυμία έχει τη δήλωση "Έξοδος από το υποσύνολο" έτσι ώστε να βγεί από την υποδιαδικασία.

Τώρα θα τρέξω τον κωδικό. θα υπολογίσει τη διαίρεση έως ότου εντοπίσει ένα σφάλμα.

Όπως μπορείτε να δείτε στο κελί C7, αντιμετώπισε ένα σφάλμα ως "Division by Zero", οπότε έχει βγει από την υποδιαδικασία. Χωρίς να ενημερώνεται ο χρήστης για έξοδο από την υποδικασία είναι πάντα επικίνδυνο. Για να ειδοποιήσουμε τον χρήστη για το σφάλμα, μπορούμε να συμπεριλάβουμε ένα μικρό πλαίσιο μηνύματος.

Κώδικας:

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 " Παρουσιάστηκε σφάλμα και το σφάλμα είναι: "& vbNewLine & Err.Description Exit Sub End Sub Sub

Ο παραπάνω κώδικας θα εμφανίσει το μήνυμα σφάλματος και μετά βγείτε από την υποδιαδικασία. Κατά την εκτέλεση κώδικα, εάν παρουσιαστεί σφάλμα, θα εμφανιστεί το πλαίσιο μηνυμάτων στο VBA όπως παρακάτω.

Αυτός είναι περισσότερο ένας αξιόπιστος τρόπος εξόδου από την Υπο Διαδικασία.

ενδιαφέροντα άρθρα...