Nekoliko čitatelja postavilo je pitanja koja zahtijevaju da Excel pokreće odjeljak makronaredbe svaki put kad se vrijednost promijeni u Excel proračunskoj tablici.
Prvo, poboljšana metoda dostupna samo u XL97: Excel 97 ima neke nove rukovatelje događajima koji omogućuju pokretanje makronaredbe svaki put kad se stanica promijeni.
Recimo da kad god se u stupac A unese vrijednost veća od 100, želite pored nje ćeliju oblikovati u crvenu boju.
- Otvorite Visual Basic Edit (Alati> Makronaredba> Visual Basic Editor)
- U lijevom prozoru desnom tipkom miša kliknite Sheet1 i odaberite View Code.
- Na vrhu dijaloškog okvira Book1 - Sheet1 Code nalaze se dva padajuća izbornika. S lijevog padajućeg izbornika odaberite Radni list. S desnog padajućeg izbornika odaberite Promijeni.
-
Unesite sljedeće retke koda:
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
Svaki put kad se promijeni vrijednost u ćeliji, pokrenut će se ova makronaredba. Varijabla Cilj će vam reći koja ćelija i nova vrijednost ćelije. Iznenađujuće, upotreba ove metode ne usporava značajno proces.
Imajte na umu da će makronaredba ostati aktivna sve dok je radni list otvoren ili dok ne pokrenete makronaredbu u kojoj je sljedeći redak:
Application.EnableEvents = False
/ p> U programu Excel 95 / 7.0: morate koristiti metodu OnEntry. Navedite makronaredbu koju želite pokrenuti nakon unosa bilo koje vrijednosti. U ovom slučaju, varijabla Application.Caller sadrži adresu i vrijednost koja se promijenila. U novi modul unesite sljedeće:
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
Provjera OnEntry ostat će aktivna sve dok ne pokrenete makronaredbu sa sljedećim kodom:
Worksheets("Sheet1").OnEntry = False