Όταν έχει νόημα να χρησιμοποιείται η επιλογή ρητή - Συμβουλές για το Excel

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

Φαίνεται ότι έχω προκαλέσει κάποια αγωνία με τα χρόνια λόγω της αμφιλεγόμενης στάσης μου ότι το Option Explicit δεν είναι χρήσιμο στο VBA. Αυτό το θυμήθηκα πρόσφατα όταν έκανα μια συνεδρία Skype στο Excel Weekend της Βραζιλίας. Έχω γράψει ένα βιβλίο στο Excel VBA για QUE. Αυτό το βιβλίο έχει μεταφραστεί στα Πορτογαλικά για την αγορά της Βραζιλίας. Έτσι, προφανώς, έχω διδάξει στους καλούς ανθρώπους της Βραζιλίας για το Excel VBA για 15 χρόνια. Τώρα που είμαι 15 ετών και πιο σοφός, θα παραδεχτώ ότι μπορεί να υπάρχουν καλοί λόγοι για τη χρήση του Option Explicit.

Στο Notre Dame, παρακολούθησα μαθήματα επιχειρήσεων με μεγάλη συγκέντρωση στον προγραμματισμό. Μέσα από ένα περίεργο σύνολο περιστάσεων, πήρα κάθε μάθημα προγραμματισμού που ήταν διαθέσιμο στο ND και από τις δύο σχολές Μηχανικών και Επιχειρήσεων. Έμαθα Fortran, Pascal, Assembler και COBOL. Μου άρεσε πολύ ο προγραμματισμός. Αυτά τα μαθήματα προγραμματισμού έσωσαν τη ΣΔΣ μου και με εμπόδισαν να αποβληθώ. Την ίδια μέρα, οι καθηγητές μας μας είπαν ότι έπρεπε να σχεδιάσουμε το πρόγραμμά μας και να σχεδιάσουμε διαγράμματα ροής πριν ξεκινήσουμε την κωδικοποίηση. Ήμουν επαναστάτης. Έγραψα πρώτα το πρόγραμμα και μετά έκανα το διάγραμμα ροής αφού τελείωσα.

Πέρασα τους πρώτους 18 μήνες της καριέρας μου γράφοντας προγράμματα COBOL. Αλλά μετά μεταφέρθηκα στα Οικονομικά και πέρασα δέκα χρόνια δουλεύοντας στα Χρηματοοικονομικά και τη Λογιστική. Έκανα ως επί το πλείστον λογιστική δουλειά, αλλά όταν έπρεπε να γράψω κάποιον κώδικα, ήξερα αρκετά για να γράψω κάποιον κώδικα.

Προγραμματίσαμε μακροεντολές στο Lotus 1-2-3 και μετά άρχισα να γράφω μακροεντολές VBA μετά τη μετάβαση στο Excel το 1995. Ήμουν ακόμα επαναστατικός σε αυτό το σημείο: η δήλωση των μεταβλητών μου εκ των προτέρων φαινόταν πάρα πολύ σαν να σχεδιάζω ένα διάγραμμα ροής πριν γράψω τον κώδικα. Δεν είμαι ποτέ για να σχεδιάσω μπροστά. Βουτήξτε. Ξεκινήστε την κωδικοποίηση. Εάν χρειάζεστε μια νέα μεταβλητή κάπου στο δρόμο, απλώς δημιουργήστε τη μεταβλητή.

Ήμουν επαναστάτης, έγραψα πρώτα τον κώδικα και σχεδίασα το διάγραμμα ροής αργότερα Η δήλωση μεταβλητών, υποστήριξα, είναι για επίσημους προγραμματιστές. Εάν εργάζεστε στη Λογιστική και απλώς χτυπάτε 20 γραμμές κώδικα, δεν υπάρχει λόγος να δηλώσετε τις μεταβλητές σας εκ των προτέρων.

Η στάση μου για αυτό με έκανε να κάνω κάποια φιλικά επιχειρήματα με άλλους ειδικούς του Excel. Jordan Goldmeier. Μπομπ Φίλιπς. Κριστιάνο Γκαλβάο.

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

Η δήλωση μεταβλητών αντικειμένου οδηγεί σε αυτήν τη χρήσιμη Αυτόματη συμπλήρωση

Εάν δεν χρησιμοποιήσετε το Option Explicit, διατρέχετε τον κίνδυνο ορθογραφικών σφαλμάτων. Στον παρακάτω κώδικα, δημιουργείται μια μεταβλητή που ονομάζεται FinalRow. Στην επόμενη γραμμή, πιθανότατα σκόπευα να κάνω βρόχο από το 2 στο FinalRow, αλλά κατά λάθος πληκτρολόγησα τη μεταβλητή ως Fina1Row.

Πριν από δεκαετίες, οι IBT Selectric typerwriters παρέλειψαν το 1 κλειδί, επειδή οι άνθρωποι θα πληκτρολογούσαν το πεζό γράμμα L.

Χωρίς την επιλογή ρητή, κάποιος μπορεί να μην συνειδητοποιήσει ότι το λάθος είναι εκεί. Η μεταβλητή FinalRow ενδέχεται να περιέχει 100. Αλλά ο κώδικας μέσα στον βρόχο δεν θα εκτελεστεί επειδή η μεταβλητή Fina1Row δεν είχε αρχικοποιηθεί ποτέ και θα περιέχει μηδέν.

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

Για να πιάσετε λάθη, επιλέξτε αυτό το πλαίσιο.

Όλες οι μελλοντικές ενότητες θα ξεκινήσουν με μια γραμμή που λέει Option Explicit. Θα πρέπει να προσθέσετε νέες γραμμές στο επάνω μέρος της μακροεντολής που ορίζει τις μεταβλητές FinalRow και i. Το Excel δεν θα σας πει για το λάθος ορθογραφικό λάθος έως ότου προσπαθήσετε πραγματικά να εκτελέσετε τη μακροεντολή. Στη συνέχεια θα σας ειδοποιήσουν ότι η μεταβλητή δεν καθορίζεται.

Η επισημασμένη λέξη είναι λανθασμένη.

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

Δεν είμαι πραγματικά σίγουρος αν οι ενέργειές μου περιελάμβαναν τα βήματα 5, 8 ή 9 από τα 12 βήματα. Αλλά αν κάποιος αφιέρωσε επιπλέον χρόνο στην αποσφαλμάτωση του κωδικού του λόγω σφάλματος πληκτρολόγησης, λυπάμαι που σας προκαλούσα πόνο.

Κάθε Σάββατο, θα συζητώ μια από τις κακές μου συνήθειες στο Excel και θα συζητάω γιατί ίσως πρέπει να κάνετε ό, τι λέω αντί να κάνετε αυτό που κάνω.

Excel Thought Of the Day

Ζήτησα από τους φίλους μου στο Excel Master τις συμβουλές τους σχετικά με το Excel. Η σημερινή σκέψη να σκεφτούμε:

"Μην αλλάζετε τους προγραμματιστές υπολογιστικών φύλλων στο μέσο.

Jordan Goldmeier

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