Μπορεί να θέλετε να εκτελέσετε το απόσπασμα μακροεντολής/VBA όταν επιλέγετε ένα συγκεκριμένο βιβλίο εργασίας, επιλέγεται ένα φύλλο στο βιβλίο εργασίας, το κελί αλλάζει την τιμή του, όταν συμβαίνει διπλό κλικ, όταν προστίθεται ένα φύλλο κ.λπ. Σε όλες αυτές τις περιπτώσεις χρησιμοποιούμε Χειριστής συμβάντων βιβλίου εργασίας. Ο Διαχειριστής συμβάντων μας βοηθά να εκτελέσουμε τον κώδικα VBA κάθε φορά που συμβαίνει ένα συγκεκριμένο συμβάν.
Σε αυτό το άρθρο, θα μάθουμε εν συντομία για κάθε Χειριστή συμβάντων βιβλίου εργασίας.
Τι είναι το Workbook Event Handler;
Ένας χειριστής συμβάντων βιβλίου εργασίας είναι μια υπορουτίνα που είναι τοπική σε ένα βιβλίο εργασίας. Αυτοί οι κώδικες λειτουργούν μόνο στα συστατικά ενός βιβλίου εργασίας. Αυτό είναι το ίδιο το βιβλίο εργασίας, είναι φύλλα και εύρη.
Πού να γράψετε τον κωδικό χειριστή συμβάντων βιβλίου εργασίας;
Τα συμβάντα του βιβλίου εργασίας γράφονται μόνο στο αντικείμενο του βιβλίου εργασίας. Εάν γράψετε ένα συμβάν βιβλίου εργασίας σε κάποια κανονική ενότητα, δεν θα υπάρξει σφάλμα, αλλά απλώς δεν θα λειτουργήσει.
Για να γράψετε στο αντικείμενο του βιβλίου εργασίας. Κάντε διπλό κλικ σε αυτό ή κάντε δεξί κλικ και κάντε κλικ στον κώδικα προβολής. Θα εμφανιστεί η περιοχή γραφής κώδικα.
Πώς να γράψετε κώδικα για ένα συγκεκριμένο συμβάν στο βιβλίο εργασίας;
Τώρα όταν βρίσκεστε στη λειτουργία επεξεργασίας, στο αναπτυσσόμενο μενού στην επάνω αριστερή γωνία, θα δείτε γενικά. Κάντε κλικ στο αναπτυσσόμενο μενού και επιλέξτε το βιβλίο εργασίας. Στο αναπτυσσόμενο μενού πάνω δεξιά γωνία, θα εμφανιστούν όλα τα συμβάντα. Επιλέξτε όποιο χρειάζεστε και ένας σκελετικός κώδικας για αυτό το συμβάν θα γραφτεί για εσάς.
Κάθε συμβάν έχει ένα σταθερό όνομα διαδικασίας. Αυτά είναι τα δεσμευμένα ονόματα υπορουτίνας που ξεκινούν με το βιβλίο εργασίας_. Δεν μπορείτε να τα χρησιμοποιήσετε για άλλες υπορουτίνες
(μπορείτε, αλλά θα είναι κανονικές υπορουτίνες).
Σπουδαίος: Κάθε υπορουτίνα από αυτήν τη λίστα θα εκτελείται στο καθορισμένο συμβάν.
Ένας τύπος διαδικασίας συμβάντος βιβλίου εργασίας μπορεί να γραφτεί μόνο μία φορά σε ένα τετράδιο εργασίας. Εάν γράψετε δύο ίδιες διαδικασίες χειρισμού συμβάντων σε ένα βιβλίο εργασίας, θα προκύψει σφάλμα και καμία από αυτές δεν θα εκτελεστεί. Φυσικά, το σφάλμα θα είναι διφορούμενο υπορουτίνα.
Ας μάθουμε εν συντομία για κάθε ένα από τα γεγονότα.
1. ο Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) Εκδήλωση
Αυτό το συμβάν ενεργοποιείται όταν κάνουμε οποιαδήποτε αλλαγή στα φύλλα εργασίας (η μορφοποίηση εξαιρείται). Εάν θέλετε να κάνετε κάτι εάν πραγματοποιηθεί οποιαδήποτε αλλαγή σε οποιοδήποτε φύλλο, τότε ο κωδικός θα είναι:
Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) 'do something Msgbox "done something" End Sub
Το "Sh" είναι πάντα το ενεργό φύλλο. Ο "Στόχος" είναι το ενεργό κελί πάντα.
Ενα άλλο παράδειγμα: Μπορεί να θέλετε να βάλετε ημερομηνία και ώρα στο Cel, prl B1 εάν αλλάξει το A1. Σε αυτή την περίπτωση, χρησιμοποιούμε το συμβάν workbook_sheetchange. Ο κώδικας θα μοιάζει με αυτόν:
Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$ A $ 1" then Range ("B1"). Value2 = Format (Now (), "hh: mm: ss") End If Τέλος υπο
Αυτό θα στοχεύει μόνο το κελί Α1 σε κάθε φύλλο, καθώς δεν έχουμε καθορίσει το αντικείμενο "sh".
2. ο Workbook_Activate () Εκδήλωση
Αυτό το συμβάν ενεργοποιείται όταν ενεργοποιηθεί ο κωδικός συμβάντος που περιέχει το βιβλίο εργασίας. Ο σκελετικός κώδικας για αυτό το συμβάν είναι:
Private Sub Workbook_Activate () End Sub
Ένα απλό παράδειγμα είναι η εμφάνιση του ονόματος του βιβλίου εργασίας όταν επιλεγεί.
Private Sub Workbook_Activate () MsgBox "You are on workbook" & Activeworkbook.Name End Sub
Μόλις έρθετε στο βιβλίο εργασίας που περιέχει αυτόν τον κωδικό, το συμβάν θα εκτελεστεί και θα εμφανιστεί ένα μήνυμα ότι "Είστε στο όνομα του βιβλίου εργασίας" (το φύλλο2 είναι στην περίπτωσή μου).
3. ο Workbook_Open () Εκδήλωση
Αυτή είναι μια από τις πιο συχνές ερωτήσεις σχετικά με το πώς να εκτελέσετε μια μακροεντολή μόλις ανοίξει το βιβλίο εργασίας. Αυτή είναι η απάντηση. Αυτή η εκδήλωση βιβλίου εργασίας εκτελείται μόλις ανοίξει το βιβλίο εργασίας. Σε αντίθεση με το Workbook_Activate () αυτός ο κώδικας εκτελείται μόνο μία φορά, όχι κάθε φορά που ενεργοποιείται.
Private Sub Workbook_Open () 'your code' End Sub
Το παρακάτω παράδειγμα συμβάντος Workbook_Open θα εμφανιστεί απλά ένα μήνυμα καλωσορίσματος, όταν ανοίξετε τον κώδικα που περιέχει το βιβλίο εργασίας.
Private Sub Workbook_Open () MsgBox "Welcome to the Master File" End Sub
4. ο Workbook_Deactivate () Εκδήλωση
Αυτό το συμβάν ενεργοποιείται όταν αφήνετε τον κώδικα που περιέχει το βιβλίο εργασίας. Με άλλα λόγια, εάν θέλετε να κάνετε κάτι, όπως να κρύψετε φύλλα ή οτιδήποτε όταν αλλάζετε βιβλίο εργασίας, χρησιμοποιήστε αυτό το συμβάν VBA. Η σύνταξη είναι:
Private Sub Workbook_Deactivate () 'your code' End Sub
Το παρακάτω παράδειγμα συμβάντος Workbook_Deativate θα εμφανίσει απλώς ένα μήνυμα ότι αφήσατε το κύριο φύλλο, όταν θα το αφήσετε.
Private Sub Workbook_Deactivate () MsgBox "You Left The Master Sheet" End Sub
5. ο Workbook_BeforeClose () Εκδήλωση
Αυτό το συμβάν ενεργοποιείται όταν επιβεβαιώσετε τη διαγραφή του φύλλου που περιέχει το συμβάν VBA. Η σύνταξη είναι απλή:
Private Sub Workbook_BeforeClose (Cancel as Boolean) End Sub
Το Cancel μπορεί να οριστεί σε true αν θέλετε να διατηρήσετε το βιβλίο εργασίας ανοιχτό.
Ο παρακάτω κώδικας θα σας ρωτήσει εάν θέλετε να αποθηκεύσετε το περιεχόμενο του βιβλίου εργασίας που πρόκειται να κλείσει.
Private Sub Workbook_BeforeClose (Cancel as Boolean) ans = MsgBox ("Θέλετε να αποθηκεύσετε το περιεχόμενο αυτού του βιβλίου εργασίας;", vbΝαιΌχι) Αν ans = True Τότε αυτό το βιβλίο εργασίας.αποθήκευση Τέλος Αν Τέλος Υπο
6. ο Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) Εκδήλωση
Αυτό το συμβάν ενεργοποιείται όταν πριν αποθηκευτεί το βιβλίο εργασίας. Η σύνταξη είναι απλή:
Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) End Sub
Το SaveAsUI έχει οριστεί True εάν υπάρχει αλλαγή στο βιβλίο εργασίας (όχι στο VBA).
Το Cancel μπορεί να οριστεί σε true αν θέλετε να διατηρήσετε το βιβλίο εργασίας χωρίς αποθήκευση.
Ο παρακάτω κώδικας θα σας ρωτήσει εάν θέλετε να αποθηκεύσετε το περιεχόμενο του βιβλίου εργασίας που πρόκειται να αποθηκευτεί.
Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel as Boolean) ans = MsgBox ("Θέλετε πραγματικά να αποθηκεύσετε το περιεχόμενο αυτού του βιβλίου εργασίας;", vbYesNo) If ans = False then Cancel = True End If End Sub
7. ο Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) Εκδήλωση
Αυτό το συμβάν ενεργοποιείται όταν πριν αποθηκευτεί το βιβλίο εργασίας. Η σύνταξη είναι απλή:
Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) End Sub
Το SaveAsUI έχει οριστεί True εάν υπάρχει αλλαγή στο βιβλίο εργασίας (όχι στο VBA).
Το Cancel μπορεί να οριστεί σε true αν θέλετε να διατηρήσετε το βιβλίο εργασίας χωρίς αποθήκευση.
Ο παρακάτω κώδικας θα σας ρωτήσει εάν θέλετε να αποθηκεύσετε το περιεχόμενο του βιβλίου εργασίας που πρόκειται να αποθηκευτεί.
Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel as Boolean) ans = MsgBox ("Θέλετε πραγματικά να αποθηκεύσετε το περιεχόμενο αυτού του βιβλίου εργασίας;", vbYesNo) If ans = False then Cancel = True End If End Sub
8. ο Workbook_NewSheet (ByVal Sh As Object) Εκδήλωση
Αυτό το συμβάν ενεργοποιείται όταν προσθέτετε ένα νέο φύλλο στο βιβλίο εργασίας. Η σύνταξη είναι απλή:
Private Sub Workbook_NewSheet (ByVal Sh As Object) Τέλος υπο
Το Sh είναι το αντικείμενο φύλλου. Ο τύπος είναι στην πραγματικότητα ένα βασικό αντικείμενο, έτσι ώστε αν προσθέσουμε ένα φύλλο γραφήματος, ένα φύλλο μακροεντολής ή ένα φύλλο διαλόγου, το συμβάν εξακολουθεί να λειτουργεί.
Ο παρακάτω κώδικας θα προσθέσει και θα εμφανίσει το όνομα του φύλλου που προστέθηκε πρόσφατα.
Private Sub Workbook_NewSheet (ByVal Sh As Object) MsgBox "Προσθέσατε νέο φύλλο." & Sh.Name End End
Υπάρχουν πολλά ακόμη γεγονότα του αντικειμένου του βιβλίου εργασίας. Δεν μπορούμε να τα συζητήσουμε όλα εδώ. Αν θέλετε να μάθετε για κάποιο συγκεκριμένο συμβάν, ρωτήστε το στην παρακάτω ενότητα σχολίων. Ελπίζω ότι μπόρεσα να εξηγήσω τα βασικά των εκδηλώσεων του βιβλίου εργασίας σε αυτό το άρθρο. Ενημερώστε με αν σας βοήθησε στην παρακάτω ενότητα σχολίων.
Σχετικά Άρθρα:
Χρήση συμβάντος αλλαγής φύλλου εργασίας για εκτέλεση μακροεντολής όταν πραγματοποιείται οποιαδήποτε αλλαγή | Έτσι, για να εκτελέσετε τη μακροεντολή σας κάθε φορά που ενημερώνεται το φύλλο, χρησιμοποιούμε τα Συμβάντα φύλλου εργασίας του VBA.
Εκτελέστε μακροεντολή εάν πραγματοποιηθεί οποιαδήποτε αλλαγή στο φύλλο σε καθορισμένο εύρος | Για να εκτελέσετε τον κώδικα μακροεντολής όταν αλλάζει η τιμή σε ένα καθορισμένο εύρος, χρησιμοποιήστε αυτόν τον κωδικό VBA. Εντοπίζει οποιαδήποτε αλλαγή πραγματοποιηθεί στο καθορισμένο εύρος και θα ενεργοποιήσει το συμβάν.
Απλούστερος κώδικας VBA για να επισημάνετε τη χρήση της τρέχουσας γραμμής και στήλης | Χρησιμοποιήστε αυτό το μικρό απόσπασμα VBA για να επισημάνετε την τρέχουσα γραμμή και στήλη του φύλλου.
Δημοφιλή άρθρα:
50 συντομεύσεις Excel για να αυξήσετε την παραγωγικότητά σας | Γίνετε πιο γρήγοροι στην εργασία σας. Αυτές οι 50 συντομεύσεις θα κάνουν τη δουλειά σας ακόμη πιο γρήγορη στο Excel.
Η συνάρτηση VLOOKUP στο Excel | Αυτή είναι μια από τις πιο δημοφιλείς και δημοφιλείς λειτουργίες του excel που χρησιμοποιείται για την αναζήτηση τιμών από διαφορετικά εύρη και φύλλα.
COUNTIF στο Excel 2016 | Μετρήστε τιμές με συνθήκες χρησιμοποιώντας αυτήν την εκπληκτική συνάρτηση. Δεν χρειάζεται να φιλτράρετε τα δεδομένα σας για να μετρήσετε συγκεκριμένη τιμή. Η λειτουργία Countif είναι απαραίτητη για την προετοιμασία του ταμπλό σας.
Πώς να χρησιμοποιήσετε τη συνάρτηση SUMIF στο Excel | Αυτή είναι μια άλλη βασική λειτουργία του ταμπλό. Αυτό σας βοηθά να συνοψίσετε τιμές υπό συγκεκριμένες συνθήκες.