Makro pri zmene bunky programu Excel - Tipy pre program Excel

Obsah

Niekoľko čitateľov si položilo otázky, ktoré vyžadujú, aby program Excel spustil časť makra zakaždým, keď sa v tabuľke Excel zmení hodnota.

Po prvé, vylepšená metóda dostupná iba v XL97: Excel 97 má niektoré nové obslužné rutiny udalostí, ktoré umožňujú spustenie makra pri každej zmene bunky.

Povedzme, že kedykoľvek je do stĺpca A zadaná hodnota väčšia ako 100, chcete naformátovať bunku vedľa nej tak, aby bola červená.

  • Otvorte úpravy jazyka Visual Basic (Nástroje> Makro> Editor jazyka Visual Basic)
  • V ľavom okne kliknite pravým tlačidlom myši na hárok1 a vyberte možnosť Zobraziť kód.
  • V hornej časti dialógového okna Kód Book1 - List1 sú dve rozbaľovacie ponuky. V rozbaľovacej ponuke vľavo vyberte položku Pracovný list. V rozbaľovacej ponuke vpravo vyberte možnosť Zmeniť.
  • Zadajte nasledujúce riadky kódu:

    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

Toto makro sa spustí pri každej zmene hodnoty v bunke. Premenná Cieľ vám povie, ktorá bunka a nová hodnota bunky. Prekvapením je, že použitie tejto metódy výrazne nespomaľuje postup.

Upozorňujeme, že makro zostane aktívne, pokiaľ je pracovný hárok otvorený alebo kým nespustíte makro s nasledujúcim riadkom:

Application.EnableEvents = False

/ p> V programe Excel 95 / 7.0: Musíte použiť metódu OnEntry. Zadáte makro, ktoré chcete spustiť po zadaní akejkoľvek hodnoty. V tomto prípade obsahuje premenná Application.Caller zmenenú adresu a hodnotu. Do nového modulu zadajte toto:

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

Kontrola OnEntry zostane aktívna, kým nespustíte makro s nasledujúcim kódom:

Worksheets("Sheet1").OnEntry = False

Zaujímavé články...