Σφάλμα 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;

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

Κώδικας:

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

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

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