Αν και είναι σημαντικό να γνωρίζετε πώς να αναφέρεστε σε αντικείμενα, δεν μπορείτε να κάνετε κανέναν χρήσιμο προγραμματισμό του Excel VBA κάνοντας απλή αναφορά σε ένα αντικείμενο. Για να πετύχετε οτιδήποτε ουσιαστικό, πρέπει να κάνετε ένα από τα δύο πράγματα:
Με κυριολεκτικά χιλιάδες ιδιότητες και μεθόδους διαθέσιμες, μπορείτε εύκολα να συντρίψετε. Απλώς θυμηθείτε, δεν θα χρειαστεί ποτέ να χρησιμοποιήσετε τις περισσότερες από τις διαθέσιμες ιδιότητες και μεθόδους.
Ιδιότητες αντικειμένου
Κάθε αντικείμενο έχει ιδιότητες. Μπορείτε να σκεφτείτε τις ιδιότητες ως ιδιότητες που περιγράφουν το αντικείμενο. Οι ιδιότητες ενός αντικειμένου καθορίζουν πώς φαίνεται, πώς συμπεριφέρεται και ακόμη και αν είναι ορατό. Χρησιμοποιώντας VBA, μπορείτε να κάνετε δύο πράγματα με τις ιδιότητες ενός αντικειμένου:
Για παράδειγμα, ένα αντικείμενο Εύρους ενός κελιού έχει μια ιδιότητα που ονομάζεται Τιμή. Η ιδιότητα Value αποθηκεύει την τιμή που περιέχεται στο κελί. Μπορείτε να γράψετε κώδικα VBA για να εμφανίσετε την ιδιότητα Value ή μπορείτε να γράψετε κώδικα VBA για να ορίσετε την ιδιότητα Value σε μια συγκεκριμένη τιμή. Η ακόλουθη μακροεντολή χρησιμοποιεί την ενσωματωμένη συνάρτηση MsgBox VBA για να εμφανίσει ένα πλαίσιο που εμφανίζει την τιμή στο κελί A1 στο Φύλλο1 του ενεργού βιβλίου εργασίας:
Αυτό το πλαίσιο μηνύματος εμφανίζει την ιδιότητα Τιμή ενός αντικειμένου εύρους.
Sub ShowValue()
Περιεχόμενα = Φύλλα εργασίας ("Φύλλο1").Εύρος ("A1").Τιμή
Περιεχόμενα MsgBox
End Sub
Παρεμπιπτόντως, το MsgBox είναι μια πολύ χρήσιμη λειτουργία. Μπορείτε να το χρησιμοποιήσετε για να εμφανίσετε αποτελέσματα ενώ το Excel εκτελεί τον κώδικα VBA σας.
Ο κώδικας στο προηγούμενο παράδειγμα εμφανίζει την τρέχουσα ρύθμιση της ιδιότητας Value ενός κελιού. Τι γίνεται αν θέλετε να αλλάξετε τη ρύθμιση για αυτήν την ιδιότητα; Η ακόλουθη μακροεντολή αλλάζει την τιμή στο κελί A1 αλλάζοντας την ιδιότητα Value του κελιού:
Sub ChangeValue()
Φύλλα εργασίας ("Φύλλο 1"). Εύρος ("A1"). Τιμή = 994,92
End Sub
Αφού το Excel εκτελέσει αυτήν τη διαδικασία, το κελί A1 στο Φύλλο1 του ενεργού βιβλίου εργασίας περιέχει την τιμή 994,92. Εάν το ενεργό βιβλίο εργασίας δεν έχει ένα φύλλο με το όνομα Φύλλο1, το αποτέλεσμα της εκτέλεσης αυτής της μακροεντολής είναι ένα μήνυμα σφάλματος. Το VBA απλώς ακολουθεί τις οδηγίες και δεν μπορεί να λειτουργήσει με ένα φύλλο που δεν υπάρχει.
Κάθε αντικείμενο έχει το δικό του σύνολο ιδιοτήτων, αν και ορισμένες ιδιότητες είναι κοινές σε πολλά αντικείμενα. Για παράδειγμα, πολλά (αλλά όχι όλα) αντικείμενα έχουν μια ιδιότητα Visible. Τα περισσότερα αντικείμενα έχουν επίσης μια ιδιότητα Name.
Ορισμένες ιδιότητες αντικειμένου είναι ιδιότητες μόνο για ανάγνωση, πράγμα που σημαίνει ότι ο κώδικάς σας μπορεί να λάβει την τιμή της ιδιότητας, αλλά δεν μπορεί να την αλλάξει.
Μια συλλογή είναι επίσης ένα αντικείμενο. Αυτό σημαίνει ότι μια συλλογή έχει και ιδιότητες. Για παράδειγμα, μπορείτε να προσδιορίσετε πόσα βιβλία εργασίας είναι ανοιχτά αποκτώντας πρόσβαση στην ιδιότητα Count της συλλογής Βιβλία εργασίας. Η ακόλουθη διαδικασία VBA εμφανίζει ένα πλαίσιο μηνύματος που σας λέει πόσα βιβλία εργασίας είναι ανοιχτά:
Sub CountBooks()
Βιβλία εργασίας MsgBox.Αριθμός
End Sub
Μέθοδοι αντικειμένων
Εκτός από τις ιδιότητες, τα αντικείμενα έχουν μεθόδους. Μια μέθοδος είναι μια ενέργεια που εκτελείτε με ένα αντικείμενο. Μια μέθοδος μπορεί να αλλάξει τις ιδιότητες ενός αντικειμένου ή να κάνει το αντικείμενο να κάνει κάτι.
Αυτό το απλό παράδειγμα χρησιμοποιεί τη μέθοδο ClearContents σε ένα αντικείμενο Range για να διαγράψει τα περιεχόμενα 12 κελιών στο ενεργό φύλλο:
Sub ClearRange()
Εύρος (“A1:A12”).ClearContents
End Sub
Ορισμένες μέθοδοι λαμβάνουν ένα ή περισσότερα ορίσματα. Ένα όρισμα είναι μια τιμή που προσδιορίζει περαιτέρω την ενέργεια που πρέπει να εκτελεστεί. Τοποθετείτε τα ορίσματα για μια μέθοδο μετά τη μέθοδο, χωρισμένα με κενό. Πολλά ορίσματα διαχωρίζονται με κόμμα.
Το ακόλουθο παράδειγμα ενεργοποιεί το Φύλλο1 (στο ενεργό βιβλίο εργασίας) και στη συνέχεια αντιγράφει τα περιεχόμενα του κελιού Α1 στο κελί Β1 χρησιμοποιώντας τη μέθοδο Αντιγραφή του αντικειμένου Εύρος. Σε αυτό το παράδειγμα, η μέθοδος Copy έχει ένα όρισμα, το οποίο είναι το εύρος προορισμού για τη λειτουργία αντιγραφής:
Sub CopyOne()
Φύλλα εργασίας ("Φύλλο 1"). Ενεργοποίηση
Εύρος ("A1"). Εύρος αντιγραφής ("B1")
End Sub
Σημειώστε ότι η αναφορά του φύλλου εργασίας παραλείφθηκε όταν αναφέρθηκαν τα αντικείμενα Range. Αυτό μπορεί να γίνει με ασφάλεια επειδή χρησιμοποιήθηκε μια δήλωση για την ενεργοποίηση του Φύλλου1. (χρησιμοποιώντας τη μέθοδο Ενεργοποίηση).
Ένας άλλος τρόπος για να καθορίσετε ένα όρισμα για μια μέθοδο είναι να χρησιμοποιήσετε το επίσημο όνομα του ορίσματος ακολουθούμενο από άνω και κάτω τελεία και σύμβολο ίσου. Η χρήση ορισμάτων με όνομα είναι προαιρετική, αλλά συχνά μπορεί να κάνει τον κώδικά σας πιο κατανοητό. Η δεύτερη δήλωση στη διαδικασία CopyOne θα μπορούσε να γραφτεί ως εξής:
Εύρος ("A1"). Αντιγραφή Προορισμού:=Εύρος ("B1")
Παρατηρήστε τη μικρή προτροπή καθώς πληκτρολογείται η δήλωση. Αυτή η προτροπή δείχνει το επίσημο όνομα του επιχειρήματος.
Το VBE εμφανίζει μια λίστα ορισμάτων ενώ πληκτρολογείτε.
Επειδή μια συλλογή είναι επίσης ένα αντικείμενο, οι συλλογές έχουν μεθόδους. Η ακόλουθη μακροεντολή χρησιμοποιεί τη μέθοδο Προσθήκη για τη συλλογή Βιβλία εργασίας:
Sub AddAWorkbook()
Τετράδια εργασιών.Προσθήκη
End Sub
Όπως μπορείτε να περιμένετε, αυτή η δήλωση δημιουργεί ένα νέο βιβλίο εργασίας. Με άλλα λόγια, προσθέτει ένα νέο βιβλίο εργασίας στη συλλογή Βιβλία εργασίας. Αφού εκτελέσετε αυτήν τη μακροεντολή, ένα νέο βιβλίο εργασίας θα είναι το ενεργό βιβλίο εργασίας.
Συμβάντα αντικειμένων
Υπάρχει ένα ακόμη θέμα που πρέπει να γνωρίζετε: εκδηλώσεις. Τα αντικείμενα ανταποκρίνονται σε διάφορα γεγονότα που συμβαίνουν. Για παράδειγμα, όταν εργάζεστε στο Excel και ενεργοποιείτε ένα διαφορετικό βιβλίο εργασίας, εμφανίζεται ένα συμβάν Ενεργοποίηση βιβλίου εργασίας. Θα μπορούσατε, για παράδειγμα, να έχετε μια μακροεντολή VBA που έχει σχεδιαστεί για να εκτελείται κάθε φορά που συμβαίνει ένα συμβάν Ενεργοποίηση για ένα συγκεκριμένο αντικείμενο του βιβλίου εργασίας.
Το Excel υποστηρίζει πολλά συμβάντα, αλλά δεν μπορούν όλα τα αντικείμενα να ανταποκριθούν σε όλα τα συμβάντα. Και ορισμένα αντικείμενα δεν ανταποκρίνονται σε κανένα γεγονός. Τα μόνα συμβάντα που μπορείτε να χρησιμοποιήσετε είναι αυτά που διατίθενται από τους προγραμματιστές του Microsoft Excel.