Jak spustit makro, když se dané buňky v Excel změní

Souhrn

V aplikaci Microsoft Excel můžete vytvořit makro, které se vyvolá pouze v případě, že je hodnota zadána do buňky v určitém listu nebo v libovolném listu, který je aktuálně otevřen.

Upozorňujeme však, že makra byste neměli vyvolávat zbytečně, protože zpomalují výkon aplikace Excel.

Další informace

Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci, bez žádné záruky výslovně uvedené nebo odvozené, včetně, bez omezení, odvozených záruk vztahujících se k obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Pracovníci technické podpory společnosti Microsoft mohou vysvětlit funkce určitého postupu, nemohou však následující příklady rozšířit o další funkce nebo konstrukce podle konkrétních požadavků uživatele. V mnoha případech by makro mělo být spuštěno pouze v případě, že do určitého počtu buněk jsou zadány hodnoty (v tomto dokumentu označované jako "klíčové buňky"). Chcete-li zabránit spuštění velkého makra při každém zadání hodnoty do buňky listu, je nutné zkontrolovat, zda je ActiveCell jednou z klíčových buněk. Chcete-li to provést, použijte metodu Intersect na ActiveCell a oblast obsahující klíčové buňky k ověření, zda ActiveCell je jednou z klíčových buněk. Pokud je ActiveCell v oblasti obsahující klíčové buňky, můžete volat makro.

Vytvoření makra Visual Basic:

  1. Klikněte pravým tlačítkem myši na kartu List1 a poté klikněte na Zobrazit kód.

    Otevře se list modulu za Listem1.

  2. Do listu modulu zadejte následující kód:

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim KeyCells As Range
    
    ' The variable KeyCells contains the cells that will
        ' cause an alert when they are changed.
        Set KeyCells = Range("A1:C10")
    
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
               Is Nothing Then
    
    ' Display a message when one of the designated cells has been 
            ' changed.
            ' Place your code here.
            MsgBox "Cell " & Target.Address & " has changed."
    
    End If
    End Sub
    
  3. V nabídce Soubor klikněte na Zavřít a vrátit se do Microsoft Excelu.

Když zadáte položku do buněk A1:C10 na Listu 1, zobrazí se okno se zprávou.