Ενδέχεται να αντιμετωπίσετε κάποια προβλήματα με τον κώδικα VBA, αλλά πώς βρίσκετε το πρόβλημα; Μερικές φορές ο κώδικας VBA σας μπορεί να χρειάζεται κάποια διόρθωση σφαλμάτων. Συνεχίστε να διαβάζετε για να ανακαλύψετε τις τέσσερις πιο κοινές μεθόδους για τον εντοπισμό σφαλμάτων κώδικα Excel VBA:
-
Εξετάζοντας τον κώδικα
-
Εισαγωγή συναρτήσεων MsgBox σε διάφορες θέσεις στον κώδικά σας
-
Εισαγωγή δηλώσεων Debug.Print
-
Χρησιμοποιώντας τα ενσωματωμένα εργαλεία εντοπισμού σφαλμάτων του Excel
Εξετάζοντας τον κωδικό σας
Ίσως η πιο απλή τεχνική εντοπισμού σφαλμάτων είναι απλώς να ρίξετε μια προσεκτική ματιά στον κώδικά σας για να δείτε εάν μπορείτε να βρείτε το πρόβλημα. Αυτή η μέθοδος, φυσικά, απαιτεί γνώση και εμπειρία. Με άλλα λόγια, πρέπει να ξέρεις τι κάνεις. Αν είσαι τυχερός, το σφάλμα ξεφεύγει αμέσως, και χτυπάς το μέτωπό σου και λες, «Α!» Όταν ο πόνος στο μέτωπο μειωθεί, μπορείτε να διορθώσετε το πρόβλημα.
Παρατηρήστε τη χρήση των λέξεων, «Αν είσαι τυχερός». Αυτό συμβαίνει επειδή συχνά ανακαλύπτετε σφάλματα όταν εργάζεστε στο πρόγραμμά σας για οκτώ ώρες συνεχόμενα, είναι 2 τα ξημερώματα και τρέχετε με καφεΐνη και δύναμη θέλησης. Σε τέτοιες στιγμές, είστε τυχεροί αν μπορείτε να δείτε ακόμη και τον κωδικό σας, πόσο μάλλον να βρείτε τα σφάλματα. Επομένως, μην εκπλαγείτε αν η απλή εξέταση του κωδικού σας δεν είναι αρκετή για να σας κάνει να βρείτε και να εξαλείψετε όλα τα σφάλματα που περιέχει.
Χρησιμοποιώντας τη συνάρτηση MsgBox
Ένα κοινό πρόβλημα σε πολλά προγράμματα περιλαμβάνει μία ή περισσότερες μεταβλητές που δεν λαμβάνουν τις τιμές που περιμένετε. Σε τέτοιες περιπτώσεις, η παρακολούθηση της μεταβλητής(ών) ενώ εκτελείται ο κώδικας σας είναι μια χρήσιμη τεχνική εντοπισμού σφαλμάτων. Ένας τρόπος για να το κάνετε αυτό είναι να εισάγετε προσωρινές λειτουργίες MsgBox στη ρουτίνα σας. Για παράδειγμα, εάν έχετε μια μεταβλητή με το όνομα CellCount, μπορείτε να εισαγάγετε την ακόλουθη δήλωση:
MsgBox CellCount
Όταν εκτελείτε τη ρουτίνα, η συνάρτηση MsgBox εμφανίζει την τιμή του CellCount.
Είναι συχνά χρήσιμο να εμφανίζετε τις τιμές δύο ή περισσότερων μεταβλητών στο πλαίσιο μηνυμάτων. Η ακόλουθη δήλωση εμφανίζει την τρέχουσα τιμή δύο μεταβλητών: LoopIndex (1) και CellCount (72), διαχωρισμένες με κενό.
MsgBox LoopIndex & " " & CellCount
Παρατηρήστε ότι οι δύο μεταβλητές συνδυάζονται με τον τελεστή συνένωσης (&) και εισαγάγετε έναν χαρακτήρα διαστήματος μεταξύ τους. Διαφορετικά, το πλαίσιο μηνύματος συνδυάζει τις δύο τιμές μαζί, κάνοντάς τις να μοιάζουν με μια ενιαία τιμή. Μπορείτε επίσης να χρησιμοποιήσετε την ενσωματωμένη σταθερά, vbNewLine, στη θέση του χαρακτήρα διαστήματος. Το vbNewLine εισάγει μια αλλαγή τροφοδοσίας γραμμής, η οποία εμφανίζει το κείμενο σε μια νέα γραμμή. Η ακόλουθη δήλωση εμφανίζει τρεις μεταβλητές, η καθεμία σε ξεχωριστή γραμμή:
Χρησιμοποιώντας ένα πλαίσιο μηνύματος για την εμφάνιση της τιμής τριών μεταβλητών.
MsgBox LoopIndex & vbNewLine & CellCount & vbNewLine & MyVal
Αυτή η τεχνική δεν περιορίζεται στην παρακολούθηση μεταβλητών. Μπορείτε να χρησιμοποιήσετε ένα πλαίσιο μηνύματος για να εμφανίσετε κάθε είδους χρήσιμες πληροφορίες ενώ εκτελείται ο κώδικάς σας. Για παράδειγμα, εάν ο κώδικάς σας περιστρέφεται μέσω μιας σειράς φύλλων, η ακόλουθη δήλωση εμφανίζει το όνομα και τον τύπο του ενεργού φύλλου:
MsgBox ActiveSheet.Name & " " & TypeName(ActiveSheet)
Εάν το πλαίσιο μηνύματός σας εμφανίζει κάτι απροσδόκητο, πατήστε Ctrl+Break και θα δείτε ένα παράθυρο διαλόγου που σας λέει ότι η εκτέλεση του κώδικα έχει διακοπεί, έχετε τέσσερις επιλογές:
-
Κάντε κλικ στο κουμπί Συνέχεια. Ο κώδικας συνεχίζει να εκτελείται.
-
Κάντε κλικ στο κουμπί Τέλος. Η εκτέλεση σταματά.
-
Κάντε κλικ στο κουμπί Εντοπισμός σφαλμάτων. Το VBE μεταβαίνει σε λειτουργία εντοπισμού σφαλμάτων.
-
Κάντε κλικ στο κουμπί Βοήθεια. Μια οθόνη βοήθειας σάς λέει ότι πατήσατε Ctrl+Break. Με άλλα λόγια, δεν είναι πολύ χρήσιμο.
Πατώντας Ctrl+Break διακόπτεται η εκτέλεση του κώδικά σας και σας δίνονται κάποιες επιλογές.
Εάν το πληκτρολόγιό σας δεν έχει πλήκτρο Break, δοκιμάστε να πατήσετε Ctrl+ScrollLock.
Μη διστάσετε να χρησιμοποιείτε συχνά τις συναρτήσεις MsgBox κατά τον εντοπισμό σφαλμάτων του κώδικά σας. Απλώς βεβαιωθείτε ότι τα αφαιρέσατε αφού εντοπίσετε και διορθώσετε το πρόβλημα.
Εισαγωγή δηλώσεων Debug.Print
Ως εναλλακτική λύση στη χρήση συναρτήσεων MsgBox στον κώδικά σας, μπορείτε να εισαγάγετε μία ή περισσότερες προσωρινές δηλώσεις Debug.Print. Χρησιμοποιήστε αυτές τις δηλώσεις για να εκτυπώσετε την τιμή μιας ή περισσότερων μεταβλητών στο παράθυρο Άμεση. Ακολουθεί ένα παράδειγμα που εμφανίζει τις τιμές τριών μεταβλητών:
Debug.Print LoopIndex, CellCount, MyVal
Παρατηρήστε ότι οι μεταβλητές διαχωρίζονται με κόμματα. Μπορείτε να εμφανίσετε όσες μεταβλητές θέλετε με μία πρόταση Debug.Print.
Το Debug.Print στέλνει έξοδο στο παράθυρο Άμεση, ακόμα κι αν αυτό το παράθυρο είναι κρυφό. Εάν το παράθυρο Άμεσο του VBE δεν είναι ορατό, πατήστε Ctrl+G (ή επιλέξτε Προβολή → Άμεσο παράθυρο). Ακολουθεί κάποια έξοδος στο παράθυρο Άμεση.
Μια δήλωση Debug.Print στέλνει έξοδο στο παράθυρο Άμεση.
Σε αντίθεση με το MsgBox, οι δηλώσεις Debug.Print δεν σταματούν τον κώδικά σας. Επομένως, πρέπει να παρακολουθείτε το παράθυρο Άμεση για να δείτε τι συμβαίνει.
Αφού διορθώσετε τον κωδικό σας, φροντίστε να καταργήσετε όλες τις δηλώσεις Debug.Print. Ακόμη και μεγάλες εταιρείες όπως η Microsoft ξεχνούν περιστασιακά να αφαιρέσουν τις δηλώσεις Debug.Print. Σε πολλές προηγούμενες εκδόσεις του Excel, κάθε φορά που άνοιγε το πρόσθετο Analysis ToolPak, θα βλέπατε πολλά περίεργα μηνύματα στο παράθυρο Άμεση. Αυτό το πρόβλημα επιλύθηκε τελικά στο Excel 2007.
Χρήση του προγράμματος εντοπισμού σφαλμάτων VBA
Οι σχεδιαστές του Excel είναι εξοικειωμένοι με την έννοια των σφαλμάτων. Κατά συνέπεια, το Excel περιλαμβάνει ένα σύνολο εργαλείων εντοπισμού σφαλμάτων που μπορούν να σας βοηθήσουν να διορθώσετε προβλήματα στον κώδικα VBA.