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

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

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

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

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

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

Μπορείτε να κατεβάσετε αυτό το πρότυπο VBA Exit Sub Excel εδώ - Πρότυπο VBA Exit Sub Excel

Παράδειγμα # 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 

Όπως γνωρίζουμε δεν μπορούμε να διαιρέσουμε κανέναν αριθμό με μηδέν. Έτσι, αν προσπαθήσουμε να το κάνουμε αυτό, θα λάβουμε το σφάλμα ως σφάλμα χρόνου εκτέλεσης «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 

Έτσι, μόλις ο κώδικας συναντήσει ένα σφάλμα, θα ωθήσει τον κώδικα να μεταβεί στην ετικέτα και η ετικέτα θα έχει τη δήλωση "Έξοδος 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 όπως παρακάτω.

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


$config[zx-auto] not found$config[zx-overlay] not found