Μακροεντολή όταν αλλάζει το κελί του Excel - Συμβουλές για το Excel

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

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

Πρώτον, η βελτιωμένη μέθοδος που διατίθεται μόνο στο XL97: Το Excel 97 έχει μερικούς νέους χειριστές συμβάντων που επιτρέπουν την εκτέλεση μιας μακροεντολής κάθε φορά που αλλάζει ένα κελί.

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

  • Ανοίξτε την Επεξεργασία της Visual Basic (Εργαλεία> Μακροεντολή> Επεξεργαστής της Visual Basic)
  • Στο αριστερό παράθυρο, κάντε δεξί κλικ στο φύλλο 1 και επιλέξτε Προβολή κώδικα.
  • Στην κορυφή του παραθύρου διαλόγου Κωδικός Book1 - Sheet1, υπάρχουν δύο αναπτυσσόμενα μενού. Από το αριστερό αναπτυσσόμενο μενού επιλέξτε Φύλλο εργασίας. Από το δεξί αναπτυσσόμενο μενού, επιλέξτε Αλλαγή.
  • Εισαγάγετε τις ακόλουθες γραμμές κώδικα:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Target.Column = 1 Then ThisRow = Target.Row If Target.Value> 100 Then Range("B" & ThisRow).Interior.ColorIndex = 3 Else Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone End If End If End Sub

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

Λάβετε υπόψη ότι η μακροεντολή θα παραμείνει ενεργή όσο το φύλλο εργασίας είναι ανοιχτό ή έως ότου εκτελέσετε μια μακροεντολή με την ακόλουθη γραμμή σε αυτό:

Application.EnableEvents = False

/ p> Στο Excel 95 / 7.0: Πρέπει να χρησιμοποιήσετε τη μέθοδο OnEntry. Καθορίζετε μια μακροεντολή που θέλετε να εκτελεστεί μετά την εισαγωγή οποιασδήποτε τιμής. Σε αυτήν την περίπτωση, η μεταβλητή Application.Caller περιέχει τη διεύθυνση και την τιμή που άλλαξε. Εισαγάγετε τα ακόλουθα σε μια νέα ενότητα:

Sub AutoOpen() Worksheets("Sheet1").OnEntry = "CheckIt" End Sub Sub CheckIt() If Application.Caller.Column = 1 Then ThisRow = Application.Caller.Row If Application.Caller.Value> 100 Then Range("B" & ThisRow).Interior.ColorIndex = 3 Else Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone End If End If End Sub

Ο έλεγχος OnEntry θα παραμείνει ενεργός έως ότου εκτελέσετε μια μακροεντολή με τον ακόλουθο κώδικα:

Worksheets("Sheet1").OnEntry = False

ενδιαφέροντα άρθρα...