Makro, ko se spremeni celica Excel - Nasveti za Excel

Kazalo

Več bralcev je postavilo vprašanja, zaradi katerih mora Excel zagnati odsek makra vsakič, ko se vrednost spremeni v Excelovi preglednici.

Prvič, izboljšana metoda je na voljo samo v XL97: Excel 97 ima nekaj novih obdelovalcev dogodkov, ki omogočajo zagon makra vsakič, ko se celica spremeni.

Recimo, da kadar koli v stolpec A vnesete vrednost, večjo od 100, želite celico ob njej formatirati v rdečo.

  • Odprite urejanje Visual Basic (Orodja> Makro> Urejevalnik Visual Basic)
  • V levem oknu z desno miškino tipko kliknite Sheet1 in izberite View Code.
  • Na vrhu pogovornega okna Book1 - Sheet1 sta dva spustna menija. V levem spustnem meniju izberite Delovni list. V desnem spustnem meniju izberite Spremeni.
  • Vnesite naslednje vrstice kode:

    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

Vsakič, ko se spremeni vrednost v celici, se ta makro zažene. Spremenljivka Target vam bo povedala, katero celico in novo vrednost celice. Presenetljivo je, da uporaba te metode bistveno ne upočasni postopka.

Upoštevajte, da bo makro ostal aktiven, dokler je delovni list odprt ali dokler ne zaženete makra z naslednjo vrstico v njem:

Application.EnableEvents = False

/ p> V Excelu 95 / 7.0: uporabiti morate metodo OnEntry. Določite makro, ki ga želite zagnati po vnosu katere koli vrednosti. V tem primeru spremenljivka Application.Caller vsebuje naslov in vrednost, ki sta se spremenila. V nov modul vnesite naslednje:

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

Preverjanje OnEntry bo ostalo aktivno, dokler ne zaženete makra z naslednjo kodo:

Worksheets("Sheet1").OnEntry = False

Zanimive Članki...