Σφάλμα VBA GoTo - Τύποι δηλώσεων σφαλμάτων στο VBA

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

Excel VBA On Error GoTo

Τα σφάλματα αποτελούν αναπόσπαστο μέρος οποιασδήποτε γλώσσας κωδικοποίησης και οι μακροεντολές VBA δεν διαφέρουν από αυτήν. Κατά τη γνώμη μου, η εύρεση του λόγου για το οποίο προκύπτει το σφάλμα είναι το 90% της δουλειάς και το 10% έγκειται στον τρόπο διόρθωσης αυτού του σφάλματος. Σε κάθε γλώσσα κωδικοποίησης, οι κωδικοποιητές χρησιμοποιούν τον δικό τους τρόπο χειρισμού σφαλμάτων στην κωδικοποίησή τους, έτσι και εμείς χρησιμοποιούμε και στην κωδικοποίηση VBA. Συχνά φορές, πρέπει να αγνοήσουμε το σφάλμα ή συχνά να θέλουμε να μεταβούμε σε συγκεκριμένα πράγματα όταν παρουσιάζεται το σφάλμα. Το "On Error" είναι η δήλωση που πρέπει να χρησιμοποιήσουμε στο VBA για τον χειρισμό σφαλμάτων.

Αυτή η δήλωση έχει τρεις τύπους δηλώσεων και παρακάτω είναι η λίστα.

  1. Σφάλμα Μετάβαση 0
  2. Σφάλμα Goto (ετικέτα)
  3. Σφάλμα Συνέχιση Επόμενο

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

Πώς να χρησιμοποιήσετε το VBA On Error Statements;

# 1 - Σφάλμα Συνέχιση Επόμενο

Όπως λέει η ίδια η δήλωση, "On Error Resume Next" σημαίνει όποτε το σφάλμα εμφανίζεται στον κωδικό "resume" επόμενη γραμμή του κώδικα αγνοώντας τον κωδικό γραμμής σφάλματος. Τώρα ρίξτε μια ματιά στον παρακάτω κώδικα.

Στον παρακάτω κώδικα, ανέφερα τα ονόματα του φύλλου εργασίας και ζήτησα να εισαγάγω την τιμή στο πρώτο κελί ως "Δοκιμή σφάλματος".

Κώδικας:

Sub On_Error_Resume_Next () Φύλλα εργασίας ("Ws 1"). Επιλέξτε Range ("A1"). Value = "Error Testing" Worksheets ("Ws 2"). Select Range ("A1"). Value = "Error Testing" Worksheets ( "Ws 3"). Επιλογή εύρους ("A1"). Value = "Δοκιμή σφαλμάτων" Φύλλα εργασίας ("Ws 4"). Επιλογή εύρους ("A1"). Value = "Δοκιμή σφάλματος" End Sub

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

  • Θα τρέξω τον κωδικό και θα δω τι θα συμβεί.
  • Λάβαμε το σφάλμα "Subscript Out of Range", κάντε κλικ στο "Debug" για να δείτε σε ποια γραμμή λάβαμε το σφάλμα.
  • Έτσι, στη γραμμή "Φύλλα εργασίας (" Ws 3 "). Επιλέξτε", λάβαμε ένα σφάλμα. Αυτό συμβαίνει επειδή, στο βιβλίο εργασίας μας, δεν υπάρχει φύλλο εργασίας με το όνομα "Ws 3", οπότε αντιμετώπισε σφάλμα.

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

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

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

# 2 - Σφάλμα GoTo 0

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

Αφού χρησιμοποιήσετε τη δήλωση "Συνέχιση του επόμενου", οι μακροεντολές VBA αρχίζουν να αγνοούν κάθε είδους σφάλμα που εμφανίζεται και συνεχίζει με την επόμενη γραμμή κωδικών. Αλλά δεν θέλουμε αυτό να συμβαίνει συνεχώς, επειδή ορισμένα λάθη πρέπει να αγνοήσουμε σκόπιμα άλλα χρειαζόμαστε ειδοποίηση.

Εάν κάποιο συγκεκριμένο σύνολο κωδικών προκαλέσει σφάλμα σε αυτό το μπλοκ κώδικα, μόνο πρέπει να αγνοήσουμε τα σφάλματα σε άλλα μέρη του κώδικα. Δεν θέλουμε να αγνοήσουμε το σφάλμα.

  • Δείτε την παρακάτω εικόνα για τη χρήση της δήλωσης "On Error GoTo 0".

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

# 3 - Σφάλμα GoTo Label

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

Σε αυτήν τη μέθοδο, "Ετικέτα" σημαίνει ότι μπορούμε να δώσουμε οποιοδήποτε όνομα σε αυτήν την ετικέτα, και η ίδια ετικέτα πρέπει να δίνεται και στην απαιτούμενη γραμμή κώδικα.

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

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

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

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

Επειδή η μακροεντολή αντιμετώπισε σφάλμα στην παρακάτω γραμμή κώδικα, έχει μεταβεί στην ετικέτα χειρισμού σφαλμάτων "ErrorMessage", η οποία περιγράφηκε μέσω της δήλωσης "On Error GoTo (Label)".

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

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

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

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