Σφάλμα VBA Μετάβαση 0 | Πώς να χρησιμοποιήσετε το σφάλμα GoTo 0 στο Excel VBA;

Excel VBA Σφάλμα Μετάβαση 0

Το VBA On Error GoTo 0 είναι μια δήλωση χειριστή σφαλμάτων που χρησιμοποιείται για την απενεργοποίηση του ενεργοποιημένου χειριστή σφαλμάτων στη διαδικασία. Αναφέρεται ως "Erab Handler Disabler".

Ο χειρισμός σφαλμάτων σε οποιαδήποτε από τις γλώσσες προγραμματισμού είναι μια κύρια τάξη που όλοι οι κωδικοποιητές πρέπει να κατανοήσουν. Η γλώσσα προγραμματισμού VBA επίσης, και έχουμε επίσης τεχνικές χειρισμού σφαλμάτων σε αυτήν τη γλώσσα προγραμματισμού. Το "On Error Resume Next" ενεργοποιεί τον χειριστή σφαλμάτων και το "On Error GoTo 0" θα απενεργοποιήσει τον ενεργοποιημένο χειριστή σφαλμάτων.

Και οι δύο "On Error Resume Next" και "On Error GoTo 0" είναι ζεύγη που πρέπει να χρησιμοποιηθούν παράλληλα για την αποτελεσματικότητα του κώδικα. Για να χειριστούμε το σφάλμα πρέπει να ξεκινήσουμε με τη δήλωση "On Error Resume Next" και για να τερματίσουμε αυτό το πρόγραμμα χειρισμού σφαλμάτων πρέπει να χρησιμοποιήσουμε τη δήλωση "On Error GoTo 0".

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

Πώς να χρησιμοποιήσετε τη δήλωση On Error GoTo 0;

Μπορείτε να πραγματοποιήσετε λήψη αυτού του προτύπου VBA On Error Goto 0 Excel εδώ - Πρότυπο VBA On Error Goto 0 Excel

Για παράδειγμα δείτε τον παρακάτω κώδικα.

Κώδικας:

 Sub On_ErrorExample1 () Φύλλα εργασίας ("Sheet1"). Επιλέξτε Range ("A1"). Value = 100 Worksheets ("Sheet2"). Select Range ("A1"). Value = 100 End Sub 

Αυτό που κάνει ο παραπάνω κώδικας είναι πρώτα θα επιλέξει το φύλλο εργασίας με το όνομα "Sheet1" και στο κελί A1 θα εισαγάγει την τιμή 100.

Κώδικας:

Φύλλα εργασίας ("Φύλλο1"). Επιλέξτε Εύρος ("A1"). Τιμή = 100

Στη συνέχεια, θα επιλέξει το φύλλο εργασίας με το όνομα "Sheet2" και θα εισαγάγει την ίδια τιμή.

Κώδικας:

Φύλλα εργασίας ("Φύλλο2"). Επιλέξτε Εύρος ("A1"). Τιμή = 100

Τώρα έχω παρακάτω φύλλα στο βιβλίο εργασίας μου.

Δεν υπάρχουν φύλλα που ονομάζονται "Sheet1" & "Sheet2", όταν εκτελούμε τον κώδικα θα αντιμετωπίσει ένα σφάλμα όπως το παρακάτω.

Επειδή δεν υπάρχει φύλλο που ονομάζεται "Sheet1", αντιμετώπισε σφάλμα "Subscript out of range". Για να χειριστώ αυτό το σφάλμα θα προσθέσω μια δήλωση χειριστή σφαλμάτων "On Error Resume Next" στην κορυφή της μακροεντολής.

Κώδικας:

 Sub On_ErrorExample1 () On Error Resume Next Worksheets ("Sheet1"). Select Range ("A1"). Value = 100 Worksheets ("Sheet2"). Select Range ("A1"). Value = 100 End Sub 

Τώρα εκτελέστε τον κώδικα και δείτε τι συμβαίνει.

Δεν θα δώσει μηνύματα σφάλματος επειδή είναι ενεργοποιημένη η δήλωση χειριστή σφαλμάτων On Error Resume Next .

Φανταστείτε το σενάριο όπου πρέπει να αγνοήσουμε το σφάλμα σε περίπτωση μη διαθεσιμότητας του φύλλου εργασίας "Sheet1", αλλά πρέπει να ειδοποιήσουμε εάν δεν υπάρχει φύλλο εργασίας που ονομάζεται "Sheet2".

Εφόσον έχουμε προσθέσει το On Error Resume Next στην κορυφή, έχει αρχίσει να χειρίζεται το σφάλμα, αλλά ταυτόχρονα, πρέπει να καθορίσουμε πόσες γραμμές πρέπει να αγνοήσουμε αυτό το σφάλμα.

Σε αυτό το παράδειγμα, απλώς πρέπει να αγνοήσουμε το σφάλμα για το πρώτο φύλλο εργασίας, αλλά για το δεύτερο φύλλο και μετά χρειαζόμαστε το σφάλμα να προκύψει εάν δεν υπάρχει φύλλο εργασίας "Φύλλο2". Έτσι, μετά τον πρώτο φύλλο εργασίας, ο κώδικας προσθέτει το σφάλμα απενεργοποίησης γραμμής On Error GoTo 0.

Κώδικας:

 Sub On_ErrorExample1 () On Error Resume Next Worksheets ("Sheet1"). Select Range ("A1"). Value = 100 On Error GoTo 0 Worksheets ("Sheet2"). Select Range ("A1"). Value = 100 End Sub 

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

Τώρα, εάν πατήσετε το πλήκτρο F8, όταν η εκτέλεση κώδικα θα μεταβεί στην επόμενη γραμμή και θα εκτελεστεί η ενεργή γραμμή. Τώρα η ενεργή γραμμή (κίτρινη γραμμή) είναι το "On Error Resume Next" και ο χειριστής σφαλμάτων θα ενεργοποιηθεί.

Τώρα οποιοδήποτε σφάλμα εμφανίζεται θα αγνοηθεί έως ότου εκτελέσει το πρόγραμμα χειρισμού σφαλμάτων απενεργοποιεί τον κωδικό " On Error GoTo 0 ".

Στην προηγούμενη προσπάθεια, συναντήσαμε λάθη αλλά πατήστε το πλήκτρο F8 για άλλη μια φορά και δείτε τη μαγεία.

Χωρίς να δώσει οποιοδήποτε είδος σφάλματος, έχει συνεχίσει την εκτέλεση του κώδικα, παρόλο που δεν υπάρχει φύλλο εργασίας "Sheet2" για επιλογή. Τώρα πατήστε ξανά το F8.

Δεδομένου ότι δεν υπήρχε Sheet1, δεν μπορεί να εισαγάγει την τιμή στο κελί A1 ως 500, αλλά αυτό που κάνει είναι να εισάγει την τιμή 500 στο κελί A1, όποιο φύλλο εργασίας είναι ενεργό. Το ενεργό φύλλο μου όταν εκτελώ τον κωδικό ήταν "Sheet3", οπότε η τιμή του 100 εισάγεται στο κελί A1.

Τώρα η ενεργή γραμμή κώδικα είναι " On Error GoTo 0 ", πατώντας το πλήκτρο F8 αυτή η εργασία γραμμής θα εκτελεστεί.

Αφού εκτελεστεί το "On Error GoTo 0", έχει σταματήσει τη διαδικασία χειρισμού σφαλμάτων και αρχίζει πάλι να εμφανίζει σφάλματα, εάν συμβεί κάτι. Πατήστε το πλήκτρο F8 και δείτε το σφάλμα.

Στην προηγούμενη περίπτωση χωρίς On Error GoTo 0, αγνόησε επίσης αυτό το σφάλμα, αλλά αφού έχουμε προσθέσει το πρόγραμμα χειρισμού σφαλμάτων, έχει αρχίσει να εμφανίζει ξανά το σφάλμα.

Πράγματα που πρέπει να θυμάστε εδώ

  • Τόσο στο On Resume Resume Next όσο και στο On Error, το GoTo 0 πρέπει να χρησιμοποιηθεί ως " Error Handler Enabler " και " Error Handler Disabler ".
  • Οποιαδήποτε γραμμή κωδικών μεταξύ αυτών των δύο δηλώσεων αντιμετωπίζει ένα σφάλμα που θα αγνοηθεί.
  • Εάν υπάρχει δήλωση On Error GoTo 0, τότε μετά την έξοδο του προγράμματος επεξεργασίας σφαλμάτων υποδιαδικασίας θα απενεργοποιηθεί.