Πώς μπορείτε να εντοπίσετε και να χειριστείτε κάθε πιθανό σφάλμα στο Excel 2016; Συχνά, δεν μπορείς. Ευτυχώς, η VBA παρέχει έναν άλλο τρόπο αντιμετώπισης αυτών των ενοχλητικών σφαλμάτων.
Επανεξέταση της διαδικασίας EnterSquareRoot
Εξετάστε τον παρακάτω κώδικα. Η ρουτίνα χρησιμοποιεί μια δήλωση για όλες τις χρήσεις On Error για να παγιδεύσει όλα τα σφάλματα και στη συνέχεια να ελέγξει εάν το InputBox ακυρώθηκε.
Sub EnterSquareRoot5()
Dim Num As Variant
Dim Msg As String
Ρύθμιση διαχείρισης σφαλμάτων
Σε σφάλμα GoTo BadEntry
Προτροπή για μια τιμή
Num = InputBox ("Εισαγάγετε μια τιμή")
' Έξοδος εάν ακυρωθεί
Εάν Num = "" Τότε βγείτε από το Sub
Εισαγάγετε την τετραγωνική ρίζα
ActiveCell.Value = Sqr(Num)
Έξοδος υπο
BadEntry:
Msg = "Παρουσιάστηκε σφάλμα." & vbNewLine & vbNewLine
Msg = Msg & "Βεβαιωθείτε ότι έχετε επιλέξει ένα εύρος", "
Msg = Msg & "το φύλλο δεν προστατεύεται",
Msg = Msg & "και εισάγετε μια μη αρνητική τιμή."
MsgBox Msg, vbCritical
End Sub
Αυτή η ρουτίνα παγιδεύει κάθε τύπο σφάλματος χρόνου εκτέλεσης. Μετά την παγίδευση ενός σφάλματος χρόνου εκτέλεσης, η αναθεωρημένη διαδικασία EnterSquareRoot εμφανίζει αυτό το πλαίσιο μηνύματος. Αυτό το πλαίσιο μηνύματος περιγράφει τις πιο πιθανές αιτίες του σφάλματος.
Ένα σφάλμα χρόνου εκτέλεσης στη διαδικασία δημιουργεί αυτό το ημιβοηθητικό μήνυμα σφάλματος.
Σε Σφάλμα δεν λειτουργεί;
Εάν μια δήλωση On Error δεν λειτουργεί όπως διαφημίζεται, πρέπει να αλλάξετε μία από τις ρυθμίσεις σας:
Ενεργοποιήστε το VBE.
Επιλέξτε την εντολή Εργαλεία → Επιλογές.
Κάντε κλικ στην καρτέλα Γενικά του παραθύρου διαλόγου Επιλογές.
Βεβαιωθείτε ότι η ρύθμιση Break on All Errors είναι αποεπιλεγμένη.
Εάν επιλεγεί αυτή η ρύθμιση, το Excel ουσιαστικά αγνοεί τυχόν δηλώσεις On Error. Συνήθως θέλετε να διατηρήσετε τις επιλογές παγίδευσης σφαλμάτων ρυθμισμένες σε Break on Unhandled Errors.
Σχετικά με τη δήλωση On Error
Η χρήση μιας δήλωσης On Error στον κώδικα VBA σας επιτρέπει να παρακάμψετε τον ενσωματωμένο χειρισμό σφαλμάτων του Excel και να χρησιμοποιήσετε τον δικό σας κώδικα διαχείρισης σφαλμάτων. Στο προηγούμενο παράδειγμα, ένα σφάλμα χρόνου εκτέλεσης αναγκάζει την εκτέλεση μακροεντολής να μεταβεί στη δήλωση με την ένδειξη BadEntry. Ως αποτέλεσμα, αποφεύγετε τα μη φιλικά μηνύματα σφάλματος του Excel και μπορείτε να εμφανίσετε το δικό σας μήνυμα στον χρήστη.
Σημειώστε ότι το παράδειγμα χρησιμοποιεί μια δήλωση Exit Sub ακριβώς πριν από την ετικέτα BadEntry. Αυτή η δήλωση είναι απαραίτητη επειδή δεν θέλετε να εκτελέσετε τον κώδικα χειρισμού σφαλμάτων εάν δεν παρουσιαστεί σφάλμα .