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

5 Comments

  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.

  3. Dobrý den,

    snažím se dat dohromady makro, které mi bude delat nasledovné:
    mam udelanou tabulku na rizení ukolu (projektu) a potřeboval bych, aby kdyz se mi zmeni aktualní stav na hodnotu A, kde tato bunka muže nabývat pismeny A,B,C,D,F (toto je na jedno listu). Potřebuji nastavit makro tak, aby když mam hodnotu v bunce ¨A¨ pravě jen tuto hodnotu. Tak aby cely tento řádek kde se nachazi hodnota ¨A¨ v uvedené bunce vyjmul a překopiroval do druhého listu , kde je stejná tabulka a v prvním listu smaže celí řadek, aby tam nebyla prazdná místa. Na druhém lisu budou jen řádky kde bude hodnota A v uvedené buňce.
    Lze takoveto makro vybec v excelu nastavit?
    Dekuji

  4. Miloš – jde to, ale bylo by zřejmě nutné to přesně prozkoumat a pak napsat ne úplně jednoduché makro.

Napsat komentář

Vaše emailová adresa nebude publikována.

*

smazat formulářOdeslat komentář