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

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

Anonim

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

Σύνταξη VBA Range Change Event

Private Sub Worksheet_Change (ByVal Target As Range) If Not Intersect (Target, Range ("your_range")) is Nothing Τότε καλέστε your_macro End If End Sub

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

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

Παράδειγμα: Εκτέλεση μακροεντολής VBA Όταν πραγματοποιείται αλλαγή στο εύρος A2: A100

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

Σε αυτό το παράδειγμα, θέλω να εκτελέσω έναν κώδικα μακροεντολής/VBA όταν πραγματοποιείται μια αλλαγή στο εύρος A2: A100 στο φύλλο 2. Για να το κάνω αυτό, κάνω διπλό κλικ στο φύλλο2 στο πρόγραμμα εξερεύνησης έργου. Ανοίγει τη σελίδα κωδικοποίησης για αυτό το φύλλο. Μπορείτε να κάνετε δεξί κλικ στο φύλλο και να κάνετε κλικ στον κώδικα προβολής για να κάνετε το ίδιο.

Πρέπει να χρησιμοποιήσω το συμβάν αλλαγής. Για αυτό, χρησιμοποιούμε το προεπιλεγμένο φύλλο εργασίας_Αλλαγή υπορουτίνας (ByVal Target As Range). Ενεργοποιείται όταν πραγματοποιείται μια καθορισμένη αλλαγή. Ο κωδικός μας λοιπόν είναι ο εξής:

Private Sub Worksheet_Change (ByVal Target As Range) Εάν δεν διασταυρώνεται (Target, Range ("A2: A100")) Δεν είναι τίποτα τότε καλέστε το TestEvent End If End Sub 

Όταν κάνετε οποιεσδήποτε αλλαγές στο εύρος A2: A100 στο Sheet2, θα υποκαλείται η υπορουτίνα TestEvent, όπως μπορείτε να δείτε στο παραπάνω gif.

Το TestEvent είναι η δημόσια υπορουτίνα στο module2. Απλώς εμφανίζεται ένα μήνυμα ότι το συμβάν λειτουργεί.

Sub TestEvent () MsgBox "Το συμβάν λειτουργεί!" Τέλος υπο 

Πώς λειτουργεί;

Έχουμε θέσει έναν όρο:

Εάν δεν διασταυρώνεται (στόχος, εύρος ("A2: A100")) δεν είναι τίποτα τότε

Εδώ διασταυρώστε (Target, Range ("A2: A100")) Is Nothing επιστρέφει True αν δεν γίνει αλλαγή στο εύρος A2: A100. Βάζουμε έναν τελεστή Not πριν από αυτήν τη δήλωση που αντιστρέφει την έξοδο που δίνεται από το "Intersect (Target, Range (" A2: A100 "))". Επομένως, εάν δεν γίνει αλλαγή στο εύρος A2: A100, η ​​έκφραση επιστρέφει Falls και το υπο TestEvent δεν λαμβάνει την κλήση. Εάν κάνετε μια αλλαγή σε οποιοδήποτε κελί της περιοχής A2: A100, η ​​έκφραση θα επιστρέψει True και το συμβάν θα συμβεί. Και αυτό συμβαίνει εδώ.

Σημείωση: Μπορείτε να βάλετε οποιαδήποτε υπορουτίνα σε αυτό το μπλοκ. Μπορεί να προέρχεται από οποιαδήποτε ενότητα. Θα πρέπει όμως να είναι δημόσιο υπορουτίνα. Μπορείτε να ρυθμίσετε το εύρος σε οποιοδήποτε βαθμό. Όλο το φύλλο είναι το όριο.

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

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

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

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

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

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

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

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

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

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