Οι εκδηλώσεις φύλλου εργασίας στο Excel VBA

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

Anonim

Μπορεί να θέλετε να εκτελέσετε το απόσπασμα μακροεντολής/VBA όταν ένα κελί αλλάζει την τιμή του, όταν συμβαίνει ένα διπλό κλικ, όταν επιλέγεται ένα φύλλο κλπ. Σε όλες αυτές τις περιπτώσεις χρησιμοποιούμε το πρόγραμμα επεξεργασίας συμβάντων φύλλου εργασίας. Ο Διαχειριστής συμβάντων μας βοηθά να εκτελέσουμε τον κώδικα VBA κάθε φορά που συμβαίνει ένα συγκεκριμένο συμβάν.

Σε αυτό το άρθρο, θα μάθουμε εν συντομία για κάθε χειριστή εκδηλώσεων φύλλου εργασίας.

Τι είναι το φύλλο εργασίας χειριστής εκδηλώσεων;

Ένας χειριστής συμβάντων φύλλου εργασίας είναι μια υπορουτίνα που είναι τοπική σε μια ενότητα φύλλου εργασίας.

Πού να γράψετε τον κωδικό χειριστή φύλλου εργασίας;

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

Για να γράψετε στο αντικείμενο φύλλου. Κάντε διπλό κλικ σε αυτό ή κάντε δεξί κλικ και κάντε κλικ στον κωδικό προβολής. Θα εμφανιστεί η περιοχή γραφής κώδικα.

Πώς να γράψετε κώδικα για ένα συγκεκριμένο συμβάν στο φύλλο εργασίας;

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

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

Σπουδαίος: Κάθε υπορουτίνα από αυτήν τη λίστα θα εκτελείται στο καθορισμένο συμβάν.
Ένας τύπος διαδικασίας συμβάντος φύλλου εργασίας μπορεί να γραφτεί μόνο μία φορά σε ένα φύλλο. Εάν γράψετε δύο ίδιες διαδικασίες χειρισμού συμβάντων σε ένα φύλλο, θα προκύψει σφάλμα και καμία από αυτές δεν θα εκτελεστεί. Φυσικά, το σφάλμα θα είναι διφορούμενο υπορουτίνα.

Ας μάθουμε εν συντομία για κάθε ένα από τα γεγονότα.

1. οWorksheet_Change (ByVal Target As Range)Εκδήλωση

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

Private Sub Worksheet_Change (ByVal Target As Range) 'do somehting Msgbox "done something" End Sub 

Ο "Στόχος" είναι το ενεργό κελί πάντα.

Ένα άλλο παράδειγμα: Μπορεί να θέλετε να βάλετε ημερομηνία και ώρα στο κελί Β1 εάν αλλάξει το Α1. Σε αυτή την περίπτωση, χρησιμοποιούμε το συμβάν worksheet_change. Ο κώδικας θα μοιάζει με αυτόν:

Private Sub Worksheet_Change (ByVal Target As Range) Εάν Στόχος.Address = "$ A $ 1" Μετά Range ("B1"). Value2 = Format (Now (), "hh: mm: ss") End If End Sub 

Αυτό θα στοχεύει μόνο το κελί Α1.

Εάν θέλετε να στοχεύσετε ένα εύρος, χρησιμοποιήστε το παρακάτω παράδειγμα:

Εκτελέστε μακροεντολή εάν πραγματοποιηθεί οποιαδήποτε αλλαγή στο φύλλο σε καθορισμένο εύρος

2. οWorksheet_SelectionChange (ByVal Target As Range)Εκδήλωση

Όπως υποδηλώνει το όνομα, αυτό το συμβάν ενεργοποιείται όταν αλλάζει η επιλογή. Με άλλα λόγια, εάν ο δρομέας σας βρίσκεται στο κελί Α1 και μετακινηθεί σε κάποιο άλλο κελί, ο κώδικας σε αυτήν την υπορουτίνα θα εκτελεστεί.

Ο παρακάτω κώδικας θα αλλάξει το χρώμα του ενεργού κελιού εάν αλλάζει και αν είναι ομοιόμορφη σειρά.

Private Sub Worksheet_SelectionChange (ByVal Target As Range) If Target.Row Mod 2 = 0 Στη συνέχεια Target.Interior.ColorIndex = 22 Τέλος Αν Τέλος Υπο 

Τώρα, κάθε φορά που ο δρομέας μου θα μετακινείται στην ομαλή σειρά, θα έχει χρώμα. Τα κελιά των περιττών σειρών θα γλιτώσουν.

Ένα άλλο παράδειγμα του συμβάντος Worksheet_SelectionChange:

Απλούστερος κώδικας VBA για να επισημάνετε τη χρήση της τρέχουσας γραμμής και στήλης

3. ο Worksheet_Activate () Εκδήλωση

Αυτό το συμβάν ενεργοποιείται όταν ενεργοποιηθεί ο κωδικός συμβάντος που περιέχει το φύλλο. Ο σκελετικός κώδικας για αυτό το συμβάν είναι:

Private Sub Worksheet_Activate () End Sub 

Ένα απλό παράδειγμα είναι η εμφάνιση του ονόματος του φύλλου όταν επιλεγεί.

Private Sub Worksheet_Activate () MsgBox "You are on" & ActiveSheet.Name End Sub 

Μόλις έρθετε στο φύλλο που περιέχει αυτόν τον κωδικό, το συμβάν θα εκτελεστεί και θα εμφανιστεί ένα μήνυμα ότι "Είστε στο όνομα του φύλλου" (το φύλλο2 είναι στην περίπτωσή μου).

4. ο Worksheet_Deactivate () Εκδήλωση

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

Private Sub Worksheet_Deactivate () 'your code' End Sub 

Το παρακάτω παράδειγμα Worksheet_Deativate συμβάντος θα εμφανίσει απλώς ένα μήνυμα ότι έχετε αφήσει το κύριο φύλλο, όταν θα φύγετε από αυτό το φύλλο.

Private Sub Worksheet_Deactivate () MsgBox "You Left The Master Sheet" End Sub 

5. ο Worksheet_BeforeDelete ()Εκδήλωση

Αυτό το συμβάν ενεργοποιείται όταν επιβεβαιώσετε τη διαγραφή του φύλλου που περιέχει το συμβάν VBA. Η σύνταξη είναι απλή:

Private Sub Worksheet_BeforeDelete () End Sub 

Ο παρακάτω κώδικας θα σας ρωτήσει εάν θέλετε να αντιγράψετε το περιεχόμενο του φύλλου που πρόκειται να διαγραφεί.

Private Sub Worksheet_BeforeDelete () ans = MsgBox ("Θέλετε να αντιγράψετε το περιεχόμενο αυτού του φύλλου σε νέο φύλλο;", vbΝαιΌχι) If ans = True then 'code to copy End If End Sub 

6. ο Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) Εκδήλωση

Αυτό το συμβάν ενεργοποιείται όταν κάνετε διπλό κλικ στο στοχευμένο κελί. Η σύνταξη αυτού του γεγονότος φύλλου εργασίας VBA είναι:

Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) End Sub 

Εάν δεν ορίσετε το κελί ή το εύρος στόχου, θα ενεργοποιείται με κάθε διπλό κλικ στο φύλλο.
Η μεταβλητή Cancel είναι μια μεταβλητή boolean. Εάν το ορίσετε True, η προεπιλεγμένη ενέργεια δεν θα πραγματοποιηθεί. Σημαίνει ότι εάν κάνετε διπλό κλικ στο κελί δεν θα μπει σε λειτουργία επεξεργασίας.
Ο παρακάτω κώδικας θα κάνει το κελί να γεμίσει με ένα χρώμα εάν κάνετε διπλό κλικ σε οποιοδήποτε κελί.

Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) Cancel = True Target.Interior.ColorIndex = 7 End Sub 

Ο παρακάτω κώδικας στοχεύει στο κελί A1. Εάν έχει ήδη γεμίσει με το καθορισμένο χρώμα, τότε θα εξαφανιστεί. Μοιάζει πολύ με ένα κουμπί ή ένα πλαίσιο ελέγχου.

Ιδιωτικό Υπο Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$ A $ 1" Then Cancel = True If Target.Interior.ColorIndex = 4 Στη συνέχεια Target.Interior.ColorIndex = xlColorIndexNone Else Target.Interior.ColorIndex = 4 Τέλος Αν Τέλος Αν Τέλος Υπο 

7. ο Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) Εκδήλωση

Αυτό το συμβάν ενεργοποιείται όταν κάνετε δεξί κλικ στο στοχευμένο κελί. Η σύνταξη αυτού του γεγονότος φύλλου εργασίας VBA είναι:

Ιδιωτικό Υπο Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True "" your code 'End Sub 

Ο παρακάτω κώδικας θα γεμίσει το κελί με την τιμή 1 αν κάνετε δεξί κλικ σε αυτό. Δεν θα εμφανίσει τις προεπιλεγμένες επιλογές δεξιού κλικ, αφού έχουμε ορίσει το "Cancel" Operator σε True.

Private Sub Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) Cancel = True Target.Value = 1 End Sub 

8. ο Worksheet_Calculate () Εκδήλωση

Εάν θέλετε να συμβεί κάτι όταν ένα excel υπολογίζει ένα φύλλο, χρησιμοποιήστε αυτό το συμβάν. Θα ενεργοποιείται κάθε φορά που το excel υπολογίζει ένα φύλλο. Η σύνταξη είναι απλή:

Private Sub Worksheet_Calculate () '' your code 'End Sub 

6. ο Worksheet_FollowHyperlink (ByVal Target As Hyperlink)Εκδήλωση

Αυτή η διαδικασία θα εκτελεστεί όταν κάνετε κλικ σε μια υπερ -σύνδεση στο φύλλο. Η βασική σύνταξη αυτού του χειριστή συμβάντων είναι:

Private Sub Worksheet_FollowHyperlink (ByVal Target As Hyperlink) '' your code 'End Sub 

Εάν θέλετε, μπορείτε να ορίσετε τον υπερ -σύνδεσμο -στόχο. Εάν δεν ορίσετε την υπερ -σύνδεση -στόχο, θα εκτελεστεί αν κάνετε κλικ σε οποιαδήποτε υπερ -σύνδεση στο φύλλο κώδικα που περιέχει.

Λοιπόν, ναι, αυτά ήταν μερικά βασικά γεγονότα φύλλου εργασίας που θα είναι χρήσιμα αν τα γνωρίζετε. Παρακάτω είναι μερικά σχετικά άρθρα που μπορεί να θέλετε να διαβάσετε.

Εάν έχετε αμφιβολίες σχετικά με αυτό το άρθρο ή οποιοδήποτε άλλο άρθρο που σχετίζεται με το excel/VBA, ενημερώστε μας στην παρακάτω ενότητα σχολίων.

Χρήση συμβάντος αλλαγής φύλλου εργασίας για εκτέλεση μακροεντολής όταν πραγματοποιείται οποιαδήποτε αλλαγή| Έτσι, για να εκτελέσετε τη μακροεντολή σας κάθε φορά που ενημερώνεται το φύλλο, χρησιμοποιούμε τα Συμβάντα φύλλου εργασίας του VBA.

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

Απλούστερος κώδικας VBA για να επισημάνετε την τρέχουσα γραμμή και στήλη χρησιμοποιώντας | Χρησιμοποιήστε αυτό το μικρό απόσπασμα VBA για να επισημάνετε την τρέχουσα γραμμή και στήλη του φύλλου.

Δημοφιλή άρθρα:

50 συντομεύσεις Excel για να αυξήσετε την παραγωγικότητά σας | Γίνετε πιο γρήγοροι στην εργασία σας. Αυτές οι 50 συντομεύσεις θα κάνουν τη δουλειά σας ακόμη πιο γρήγορη στο Excel.

Η συνάρτηση VLOOKUP στο Excel | Αυτή είναι μια από τις πιο δημοφιλείς και δημοφιλείς λειτουργίες του excel που χρησιμοποιείται για την αναζήτηση τιμών από διαφορετικά εύρη και φύλλα.

COUNTIF στο Excel 2016 | Μετρήστε τιμές με συνθήκες χρησιμοποιώντας αυτήν την εκπληκτική συνάρτηση. Δεν χρειάζεται να φιλτράρετε τα δεδομένα σας για να μετρήσετε συγκεκριμένη τιμή. Η λειτουργία Countif είναι απαραίτητη για την προετοιμασία του ταμπλό σας.

Πώς να χρησιμοποιήσετε τη συνάρτηση SUMIF στο Excel | Αυτή είναι μια άλλη βασική λειτουργία του ταμπλό. Αυτό σας βοηθά να συνοψίσετε τιμές υπό συγκεκριμένες συνθήκες.