Několik čtenářů položilo otázky, které vyžadují, aby aplikace Excel spustila část makra pokaždé, když se v tabulce aplikace Excel změní hodnota.
Nejprve vylepšená metoda dostupná pouze v XL97: Excel 97 má některé nové obslužné rutiny událostí, které umožňují spuštění makra při každé změně buňky.
Řekněme, že kdykoli ve sloupci A zadáte hodnotu větší než 100, chcete formátovat buňku vedle ní tak, aby byla červená.
- Otevřete úpravy jazyka (Nástroje> Makro> Editor jazyka)
- V levém okně klikněte pravým tlačítkem na List1 a vyberte Zobrazit kód.
- V horní části dialogového okna Kód Book1 - List1 jsou dvě rozevírací nabídky. V rozbalovací nabídce vlevo vyberte Pracovní list. Z rozbalovací nabídky vpravo vyberte Změnit.
-
Zadejte následující řádky 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
Při každé změně hodnoty v buňce se toto makro spustí. Proměnná Target vám řekne, která buňka a nová hodnota buňky. Překvapivě použití této metody významně nezpomaluje proces.
Upozorňujeme, že makro zůstane aktivní, dokud je list otevřený nebo dokud nespustíte makro s následujícím řádkem:
Application.EnableEvents = False
/ p> V aplikaci Excel 95 / 7.0: Musíte použít metodu OnEntry. Zadáte makro, které chcete spustit po zadání jakékoli hodnoty. V tomto případě obsahuje proměnná Application.Caller adresu a hodnotu, které se změnily. Do nového modulu zadejte následující:
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 zůstane aktivní, dokud nespustíte makro s následujícím kódem:
Worksheets("Sheet1").OnEntry = False