Σφάλμα παράβλεψης VBA

Αυτό το σεμινάριο θα δείξει πώς μπορείτε να διασφαλίσετε ότι το VBA αγνοεί ένα σφάλμα κατά την εκτέλεση του κώδικά σας.

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

(Ανατρέξτε στον Οδηγό χειρισμού σφαλμάτων για περισσότερες πληροφορίες σχετικά με τα Σφάλματα VBA)

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

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

123456 Sub TestErrorIgnore ()Στο Σφάλμα Συνέχιση ΕπόμενοActiveWorkbook.Sheets ("Sheet4"). ΕπιλέξτεActiveSheet.Delete«περισσότερος κωδικός εδώΤέλος υπο

Στο παραπάνω παράδειγμα, ένα Στο Σφάλμα Συνέχιση Επόμενο η δήλωση έχει τοποθετηθεί στην κορυφή της διαδικασίας. Ο κώδικας στη συνέχεια κατασκευάζεται για να επιλέξει Sheet4 και στη συνέχεια να τον διαγράψει.

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

Αυτό μπορεί να είναι αρκετά επικίνδυνο αν ήταν μόνο το Φύλλο 4 που θέλατε να διαγράψετε και όχι μόνο το Φύλλο που είναι ενεργό. Για να αποτρέψουμε αυτό το σφάλμα, μπορούμε να ορίσουμε μια μεταβλητή στο φύλλο 4 και να διαγράψουμε μόνο αυτό το φύλλο ΑΝ υπάρχει.

1234567 Sub TestErrorIgnore ()Dim ws Ως φύλλο εργασίαςΣτο Σφάλμα Συνέχιση ΕπόμενοΟρισμός ws = ActiveWorkbook.Sheets ("Sheet4")ws. Διαγραφή«περισσότερος κωδικός εδώΤέλος υπο

Τώρα, όταν εκτελείται ο κώδικας, θα διαγραφεί μόνο το Sheet4 ΑΝ Το Sheet4 υπάρχει στην πραγματικότητα. Εάν το Φύλλο 4 δεν υπάρχει, το VBA θα αγνοήσει το σφάλμα και θα συνεχίσει.

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

123456 Sub DeleteSheets ()Dim ws Ως φύλλο εργασίαςΓια κάθε ws Στο ActiveWorkbook.Sheetsws. ΔιαγραφήΕπόμενο wsΤέλος υπο

Ο παραπάνω κωδικός θα σταματήσει με ένα σφάλμα.

Κάνοντας κλικ Εντοπισμός σφαλμάτων θα μας οδηγήσει στον κώδικα με τονισμένη την προσβλητική γραμμή!

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

12345678 Sub DeleteSheets ()"προσθέστε γραμμή σφάλματος εδώΣτο Σφάλμα Συνέχιση ΕπόμενοDim ws Ως φύλλο εργασίαςΓια κάθε ws Στο ActiveWorkbook.Sheetsws. ΔιαγραφήΕπόμενο wsΤέλος υπο

Σφάλμα GoTo 0

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

12345678 Sub TestErrorIgnore ()Dim ws Ως φύλλο εργασίαςΣτο Σφάλμα Συνέχιση ΕπόμενοΟρισμός ws = ActiveWorkbook.Sheets ("Sheet4")ws. ΔιαγραφήΣφάλμα GoTo 0«περισσότερος κωδικός εδώΤέλος υπο

Θα βοηθήσει στην ανάπτυξη του τόπου, μοιράζονται τη σελίδα με τους φίλους σας

wave wave wave wave wave