Kousek makra, který v tomto návodu uvádím, je opravdu praktický a používám ho často.

Je to kód, který spouští libovolné makro - ovšem ne klasicky například tlačítkem, ale tím, že se změní hodnota některé buňky.

Použitím tohoto makra často v aplikacích odpadá nutnost makra fyzicky spouštět - spouští se sama, často tak, že o jejich přítomnosti uživatel ani neví.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

' Tato buňka nebo oblast když se změní, spouští se makro
    Set KeyCells = Range("A1:C10")
    
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
    Is Nothing Then

' Následující makro se změnou buňky nebo oblasti spouští
    mojemakro
       
    End If
End Sub

Toto makro je dost netypické v tom, že se nevkládá do modulů VBA, ale do konkrétního listu:

makro

Následuje ke stažení ukázka konkrétního využití tohoto způsobu spouštění makra.

auta_makro_filtr_automaticke_spousteni

3 Komentářů

  1. Dobrý den,
    máme v práci problém s tabulkou do které se zapisují data o příjezdu vozidel a uživatel sešitu by měl každou minutu data uložit aby se zobrazili na jiném monitoru kde se tabulka o vozidlech zobrazuje nepřetržitě.Ale k tomu ho nelze donutit a informace na monitoru máme třeba 20 minut staré.Lze nějak vymyslet to aby se sešit ukládal sám po minutě? A když sešit uzavře aby ani nemusel nic ukládat proto že se to již uložilo?
    Moc děkuji za pomoc, nevíme si s tím rady a ani nevíme zda to jde. igor.f@email.cz

  2. Dotaz: funguje mi to ale jen tehdy, pokud změním hodnotu bunky či oblasti zadáním z klávesnice. Je tak? Potřeboval bych řešení, aby se provedlo makro, když se změní hodnota v určité bunce, kde je vzorec.
    Vzorec provádí výpočet podle dat z externího linku.

    Nebo alespon řešení, aby se provádělo makro např každou minutu, ale tak, aby makro bylo v kodu listu a nezatěžovalo tabulku, kde jsou prováděny trvale výpočty právě z hodnot externího linku.

Napsat komentář

Vaše emailová adresa nebude publikována.

smazat formulářOdeslat komentář