Makronaredba kada se Excel promijeni - Excel savjeti

Sadržaj

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

Zanimljivi članci...