Makro při změně buňky aplikace Excel - Excel tipy

Obsah

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

Zajímavé články...