Είστε περίεργοι πώς να γράψετε μια διαδικασία χειρισμού συμβάντων στο VBA; Το VBE σας βοηθά όταν είστε έτοιμοι να γράψετε μια διαδικασία χειρισμού συμβάντων. Εμφανίζει μια λίστα με όλα τα συμβάντα για το επιλεγμένο αντικείμενο.
Στην κορυφή κάθε παραθύρου Κώδικα, βρίσκετε δύο αναπτυσσόμενες λίστες:
Από προεπιλογή, η αναπτυσσόμενη λίστα Αντικείμενο στο παράθυρο Κώδικας εμφανίζει Γενικά.
Εάν γράφετε ένα πρόγραμμα χειρισμού συμβάντων για το αντικείμενο ThisWorkbook, πρέπει να κάνετε κλικ στο ThisWorkbook στο παράθυρο Project και στη συνέχεια να επιλέξετε Workbook από το αναπτυσσόμενο Object (είναι η μόνη άλλη επιλογή).
Εάν γράφετε ένα πρόγραμμα χειρισμού συμβάντων για ένα αντικείμενο Φύλλου, πρέπει να κάνετε κλικ στο συγκεκριμένο Φύλλο στο παράθυρο του Έργου και, στη συνέχεια, να επιλέξετε Φύλλο εργασίας από την αναπτυσσόμενη λίστα Αντικείμενο (και πάλι, η μόνη άλλη επιλογή).
Αφού κάνετε την επιλογή σας από την αναπτυσσόμενη λίστα Αντικείμενο, μπορείτε να επιλέξετε το συμβάν από την αναπτυσσόμενη λίστα Διαδικασία. Ακολουθούν ορισμένες από τις επιλογές για μια εκδήλωση που σχετίζεται με το βιβλίο εργασίας.
Επιλογή συμβάντος στο παράθυρο Κώδικας για το αντικείμενο ThisWorkbook.
Όταν επιλέγετε ένα συμβάν από τη λίστα, το VBE ξεκινά αυτόματα τη δημιουργία μιας διαδικασίας χειρισμού συμβάντων για εσάς. Αυτό είναι ένα πολύ χρήσιμο χαρακτηριστικό, γιατί σας λέει ακριβώς ποια είναι τα σωστά επιχειρήματα.
Εδώ είναι μια μικρή ιδιορρυθμία. Όταν επιλέγετε για πρώτη φορά Βιβλίο εργασίας από τη λίστα Αντικείμενο, το VBE πάντα υποθέτει ότι θέλετε να δημιουργήσετε μια διαδικασία χειρισμού συμβάντων για το συμβάν Open και τη δημιουργεί για εσάς. Εάν στην πραγματικότητα δημιουργείτε μια διαδικασία Workbook_Open, δεν πειράζει. Αλλά αν δημιουργείτε μια διαφορετική διαδικασία συμβάντος, πρέπει να διαγράψετε το κενό Workbook_Open Sub που δημιουργήθηκε.
Ωστόσο, η βοήθεια του VBE φτάνει μέχρι εκεί. Γράφει τη δήλωση Sub και την πρόταση End Sub. Η σύνταξη του κώδικα VBA που βρίσκεται ανάμεσα σε αυτές τις δύο δηλώσεις είναι δική σας δουλειά.
Δεν χρειάζεται πραγματικά να χρησιμοποιήσετε αυτές τις δύο αναπτυσσόμενες λίστες, αλλά κάνοντας έτσι τη δουλειά σας πιο εύκολη, επειδή το όνομα της διαδικασίας χειρισμού συμβάντων είναι εξαιρετικά σημαντικό. Εάν δεν έχετε το όνομα ακριβώς σωστά, η διαδικασία δεν θα λειτουργήσει. Επίσης, ορισμένες διαδικασίες χειρισμού συμβάντων χρησιμοποιούν ένα ή περισσότερα ορίσματα στη δήλωση Sub. Δεν υπάρχει περίπτωση να θυμηθείς ποια είναι αυτά τα επιχειρήματα. Για παράδειγμα, εάν επιλέξετε SheetActivate από τη λίστα συμβάντων για ένα αντικείμενο βιβλίου εργασίας, το VBE γράφει την ακόλουθη δήλωση Sub:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Σε αυτήν την περίπτωση, το Sh είναι το όρισμα που μεταβιβάζεται στη διαδικασία και είναι μια μεταβλητή που αντιπροσωπεύει το φύλλο στο ενεργοποιημένο βιβλίο εργασίας.