Makro, kui Exceli lahter muutub - Exceli näpunäited

Lang L: none (table-of-contents)

Mitmed lugejad on esitanud küsimusi, mis nõuavad, et Excel käivitaks makroosa iga kord, kui Exceli arvutustabelis väärtus muutub.

Esiteks on täiustatud meetod saadaval ainult versioonis XL97: Excel 97-l on mõned uued sündmuste käitlejad, mis võimaldavad makrot käitada iga kord, kui lahter vahetub.

Oletame, et alati, kui veergu A sisestatakse väärtus, mis on suurem kui 100, soovite selle kõrval oleva lahtri vormistada punaseks.

  • Avage Visual Basicu redigeerimine (Tööriistad> Makro> Visual Basicu redaktor)
  • Paremklõpsake vasakpoolses aknas lehte1 ja valige Kuva kood.
  • Dialoogiboksi Book1 - Sheet1 Code ülaosas on kaks rippmenüüd. Valige vasakpoolsest rippmenüüst Tööleht. Valige paremast rippmenüüst Muuda.
  • Sisestage järgmised koodiread:

    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

Kui lahtris muudetakse väärtust, käivitatakse see makro. Muutuja Target ütleb teile, milline lahter ja selle uus väärtus. Üllatuslikult ei aeglusta selle meetodi kasutamine protsessi oluliselt.

Pange tähele, et makro jääb aktiivseks seni, kuni tööleht on avatud või kuni käivitate järgmise reaga makro:

Application.EnableEvents = False

/ p> Excelis 95 / 7.0: peate kasutama OnEntry-meetodit. Määrate makro, mida soovite käivitada pärast mis tahes väärtuse sisestamist. Sel juhul sisaldab muutuja Application.Caller muutunud aadressi ja väärtust. Sisestage uude moodulisse järgmised andmed:

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 kontroll jääb aktiivseks seni, kuni käivitate järgmise koodiga makro:

Worksheets("Sheet1").OnEntry = False

Huvitavad Artiklid...