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

Excel VBA On Error GoTo

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

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

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

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

Πώς να χρησιμοποιήσετε τις δηλώσεις σφαλμάτων VBA;

Μπορείτε να πραγματοποιήσετε λήψη αυτού του προτύπου δήλωσης GoTo VBA On Error - Πρότυπο δήλωσης GoTo VBA On Error

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