Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:
Událost, která reaguje na provedení přepočtu listu.
Událost Worksheet_Calculate, která reaguje na přepočet listu je výhosná pro odchycení změn při filtrování. Událost Worksheet_Change nereaguje například na filtrování) případně nastává až moc často. Nebo Vám nevyhovuje událost reagující na změnu výběru Worksheet_Change. Proto pro některé případy je vhodná Worksheet_Calculate. Pomocí ní dokážete například odchytiť změny provedené při použití filtru (a vhodně na ně reagovat).
Deklarace
Private Sub Worksheet_Calculate()
End Sub
Pro první vyzkoušení můžete při každé změně, která vyvolá událost Calculate zobrazit dialogový box. Jednoduše zjistíte zda je pro Vás tato událost ta pravá nebo raději nepoužijete SelectionChange
Private Sub Worksheet_Calculate()
MsgBox ("Změna Worksheet_Calculate")
End Sub
Pro podchycení změny na listu pomocí filtru(ů) je vhodné použít událost Worksheet_Calculate. Nejprve je potřeba doplnit tabulku o vzorec (funkci) SUMA. Při změně ve filtrech dojde k přepočtu vzorce (funkce) a tím pádem i k vyvolání události Calculate.
Stačí, aby VBA kód spustil dialogový box s informací, když tato událost nastane.
Private Sub Worksheet_Calculate()
MsgBox ("Změna Worksheet_Calculate")
End Sub
Pokud s událostmi pracujete poprvé a nejste si jisti co která umí, na co která reaguje.
Jednoduše uděláte několik VBA kódu. Stačí, aby příslušný kód spustil dialogový box s příslušnou informací, která událost nastala.
Private Sub Worksheet_Calculate()
MsgBox ("Změna Worksheet_Calculate")
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
MsgBox ("Změna Worksheet_SelectionChange")
End Sub
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
MsgBox ("Změna Worksheet_Change")
End Sub
Poznámka: Takto také zjistíte, která událost nastane jako první a která posléze (tj. co má vyšší prioritu), když jsou vyvolány dvě (tři) události zároveň. Takto jednoduše pochopíte, kdy která událost zareaguje.
Další informace o událostech listu jsou v souhrném článku: Události listu v MS Excel VBA
Článek byl aktualizován: 19.09.2020 11:07
Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.
Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.
Přidáno: 26.05.13 13:05
Ahoj Exceláci,
tohle jsou fakt stránky k nezaplacení, už jsem z nich hodně čerpal. Ale narazil jsem na problém se kterým nehnu. Můžeš mi Pavle prosím poradit ?
Začnu konkrétně : Připravuju výsledkovou listinu pro rybářský závody. Je to v klasický tabulce kde ve sloupci "A" jsou jména rybářů, ve sloupci "B" je součet nalovených ryb a ve sloupcích "C" až "T" jsou zadaný jednotlivý úlovky. V souboru graf.xlsx mám udělaný graf a k tomu chci umístit do buňky největší a do další nejmenší úlovek. To jsem dokázal pomocí : =MAX('[Data.xlsm]List1'!$C$1:$T$32)
a pak to samý s MIN... to funguje v pohodě, ale já bych k tomu samozřejmě potřeboval přidat ( třeba do vedlejší buňky) jméno kdo tu největší a nejmenší rybu ulovil a to je ve sloupci "A". A tam končím, fakt nevím jak to jméno vytáhnout.
Přidáno: 27.05.13 13:54
Já asi napsal ten konec blbě. Ty buňky s tou největší rybou nebudou v tom grafu, ale vedle grafu normálně v sešitu. Díky Milan
Přidáno: 27.05.13 16:52
To Milano: Do tabulky dat další sloupec se jmény "U" a využít funkci SVYHLEDAT http://office.lasakovi.com/excel/funkce/svyhledat-funkce-excel/
Přidáno: 10.06.13 14:21
Díky, ale tímhle jsem přišel jen na to, že jsem málo chytrej. Podle Tvého návodu jsem přidal na list v souboru data.xlsm sloupec "U" kam jsem nakopíroval všechna jména a do buňky v souboru graf.xlsm kde chci zobrazovat jméno je vzorec :
=SVYHLEDAT(I2;[Data.xlsm]List1!$C$1:$T$32;[Data.xlsm]List1!$21)
Když chci vzorec uložit vyhučí to na to, že vzorec obsahuje chybu. Možná se mu nelíbí ve vzorci buňka "I2", ve který je vzorec na vyhledání nejvyšší hodnoty. Můžeš mi prosím ještě poradit ?
Díky Milan
Přidáno: 10.06.13 18:19
To Milano: Předpoládám chybu v [Data.xlsm]List1!$21 - jde totiž o číslo sloupce (nevím co je to za údaj). Když tak pošli ukázku na můj email, zkusím se mrknout.
Přidáno: 23.05.14 14:58
Dobrý den,
mám vytvořenou událost, která mi při změně buňky přičte jedničku k původní hodnotě jiné buňky. Problém je v tom, že toto funguje pouze, když hodnotu změním ručně, potřeboval bych ale, aby se tato událost spustila, když dojde k přepočtu pomocí vzorce. Dá se to nějak udělat?
kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$Y$25" Then
Range("V22") = Range("V22") + 1
End If
End Sub
Jinak moc děkuji za perfektní web, už mi mockrát pomohl.
Přidáno: 09.07.14 14:28
To Jakub:
Public StaraHodnota
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("Y25") <> StaraHodnota Then
Application.EnableEvents = False
Range("V22") = Range("V22") + 1
StaraHodnota = Range("Y25")
Application.EnableEvents = True
End If
End Sub
Pomohl Vám návod? Sdílejte na Facebooku, G+ |
||
LinkedIn... |
Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2024 |