Události v aplikaci Excel VBA

Obsah:

Anonim

Události nejsou nic jiného, ​​než že se něco dějí. V Excelu je to stejné. Někdy ale chceme, aby se něco stalo automaticky, když dojde k určité události. Abychom něco udělali, když se v Excelu stane konkrétní událost, použijeme událost Excel VBA.

Obslužné rutiny událostí aplikace Excel VBA: Typy

V aplikaci Excel VBA existuje hlavně 7 typů obsluh událostí.

  1. Události aplikace
  2. Události sešitu
  3. Události pracovního listu
  4. Události grafu
  5. Události formuláře uživatele
  6. Kombinace kláves Události (události klávesových zkratek)
  7. Události včas

Pojďme je prozkoumat jeden po druhém.

Události aplikace v aplikaci Excel

Události na úrovni aplikace se spouští, když je aplikace (Excel) zavřena, otevřena, aktivována, chráněna, nechráněna atd.

Na úrovni aplikace existuje více než 50 typů událostí. Nemůžeme zde tedy diskutovat o všech.

Rozsah události aplikace:

Tyto události budou fungovat na všech sešitech aplikace Excel, pokud je otevřený sešit obsahující kód. Pokud jste například vytvořili událost na úrovni aplikace, která vám sdělí název listu aktivního listu, pak se spustí při každé aktivaci listu v jakémkoli sešitu.

Jak vytvořit obslužnou rutinu události aplikace ve VBA?

Vytvoření události aplikace je trochu složité. Podrobně jsem to zde vysvětlil na příkladu.

Události sešitu v Excelu

Rozsah události sešitu

Události sešitu fungují na celém sešitu, který obsahuje kód. Událost může sešit otevřít, zavřít, aktivovat, deaktivovat, změnit list atd.

Kam psát události sešitu?

Události sešitu jsou zapsány na objekt sešitu.

Jak napsat událost sešitu?

Následuj tyto kroky:

1. V průzkumníku projektů poklepejte na objekt sešitu. Zobrazí se oblast pro psaní kódu. Zde jsou zapsány všechny události v rozsahu sešitu.

2. V levé horní části oblasti pro psaní kódu se zobrazí rozevírací nabídka. Klikněte na rozevírací nabídku a vyberte sešit. Standardně je to obecné.

3. Jakmile vyberete sešit z rozevíracího seznamu vlevo, ve výchozím nastavení vloží podprogram události sešit_otevření. Pokud však chcete použít podprogram jiné události, vyberte jej z rozevíracího seznamu vpravo nahoře. Zobrazí seznam všech dostupných událostí sešitu.

4. Vyberte si událost, kterou potřebujete. Kvůli příkladu volím událost SheetActivate. Tato událost se spustí při každém výběru listu v sešitu s kódem.

Příklad události sešitu:Toto je jednoduchý příklad. Jen chci ukázat název aktivovaného listu. K tomu jednoduše použiji událost SheetActivate v objektu Sešit.

Soukromý sub Workbook_SheetActivate (ByVal Sh As Object) MsgBox Sh.Name & "Activated" End Sub 

Nyní, kdykoli bude aktivován nový list v tomto sešitu, se tato událost spustí. Budete vyzváni k masáži, název listu aktivován.

Vím, že tento kód není tak užitečný, ale mezi tyto řádky můžete vložit libovolnou sadu pokynů. Funkce a podprogramy můžete volat ze samotných modulů.

Události listu v Excelu

Všechny události zaměřené na rozsah a buňky jsou zapsány v událostech listu. Zde si můžete přečíst o událostech pracovního listu.

Rozsah události listu

Události listu jsou cílené na rozsahy a buňky konkrétního listu. Událost listu se spustí při událostech, které se stanou na konkrétním listu (List, který obsahuje kód).

Kde jsou psány události pracovního listu?

Události listu jsou zapsány na objekt listu.

Jak napsat kód pro zpracování události pracovního listu?

Je to stejné jako události sešitu.

1. V průzkumníku projektů poklepejte na objekt listu. Pro list se zobrazí oblast pro psaní kódu. Do těchto listů jsou zapsány všechny události s rozsahem pracovního listu.

2. V levé horní části oblasti pro psaní kódu se zobrazí rozevírací nabídka. Klikněte na rozevírací nabídku a vyberte list. Standardně je to obecné.

3. Jakmile v rozevíracím seznamu vlevo vyberete list, ve výchozím nastavení vloží podprogram události worksheet_selectionChange. Pokud však chcete použít podprogram jiné události, vyberte jej z rozevíracího seznamu vpravo nahoře. Zobrazí seznam všech dostupných událostí pracovního listu.

4. Vyberte si událost, kterou potřebujete. Kvůli příkladu volím událost Worksheet_SelectionChange (ByVal Target As Range). Tato událost se spustí při každé změně výběru rozsahu na listu.

Pracovní list Příklad události

Soukromý dílčí pracovní list_Volba výběru (ByVal Cíl jako rozsah) MsgBox „Jste v“ & Target.Address Konec Sub 

Výše uvedená událost je zapsána v listu 1 sešitu. Tato událost zobrazí adresu rozsahu, kterou jste vybrali na listu s kódem, kdykoli změníte výběr rozsahu. Níže je uvedeno několik dalších příkladů událostí pracovního listu.

Události listu se většinou používají v dynamických řídicích panelech. Buňky můžete použít jako zaškrtávací políčka nebo aktivní výběry, aby byly vaše řídicí panely dynamické.

Níže je uvedeno několik dalších příkladů událostí pracovního listu.

Použití události změny listu ke spuštění makra po provedení jakékoli změny

V případě změny provedené na listu ve specifikovaném rozsahu spusťte makro

Nejjednodušší kód VBA pro zvýraznění aktuálního řádku a sloupce pomocí

Události grafu

V aplikaci Excel existují dva typy událostí grafu. Jedním z nich jsou normálně vložené grafy, které jsme zde podrobně probrali. Je to hodně podobné událostem na úrovni aplikace.

Další je list s grafem. Jedná se o speciální listy, které obsahují pouze grafy připojené k datům na některých jiných listech.

Pokud jde o události, jsou velmi podobné normálním listům.

Kam psát události v grafech?

Události grafu jsou zapsány do objektu grafu. Poklepáním na list grafu otevřete oblast kódu.

Jak psát události v grafu?

Následuj tyto kroky:

1. V Průzkumníku projektů poklepáním na objekt listu grafu otevřete oblast kódu. Zde jsou zapsány všechny události související s konkrétním grafem.

2. V pravém horním rohu oblasti kódu uvidíte obvyklou rozevírací nabídku. V rozevíracím seznamu vyberte graf.

3. V pravém rohu vyberte požadovanou událost.

Pokud například chci něco udělat, jakmile uživatel vybere graf, použiji událost Chart_Activate.

Příklad: Událost grafu

Soukromý dílčí graf_Activate () MsgBox „Graf je obnoven“ Koncový díl 

Výše uvedený kód se spustí, jakmile vyberete list grafu. Zde se pouze zobrazí zpráva, že graf je aktualizován, ale můžete udělat hodně. Stejně jako před zobrazením této zprávy můžete dynamicky vybrat rozsah dat pro graf.

Níže je několik dalších příkladů událostí grafu:

Události UserForm

Událost formuláře uživatele je stejná jako ostatní události. Ve formuláři uživatele dochází k několika událostem. Tyto události můžete použít ke spuštění událostí.

Kam psát události uživatelského formuláře?

Chcete -li napsat událost formuláře uživatele, musíte nejprve vložit UserForm.

1. Potom klikněte pravým tlačítkem na UserForm a klikněte na kód zobrazení. Nyní se otevře oblast kódu.

2. Nyní v levém horním rohu vyberte Userform.

3. Z rozevíracího seznamu vlevo vyberte událost, kterou chcete použít ke spuštění spuštění kódu.

4. Mezi kód události kódu napište požadovaný kód.

Níže uvedený příklad jednoduše ukazuje zprávu, když je aktivován uživatelský formulář.

Private Sub UserForm_Activate () MsgBox "Dobrý den, prosím, dvakrát ověřte své informace." End Sub 

Výše uvedený kód pouze zobrazuje zprávu, ale tuto událost můžete použít k předvyplnění formuláře některými výchozími vstupy nebo k vyplnění použít informace o listu.

Událost na klíč

Tyto události jsou spuštěny po stisknutí zadané klávesy nebo kombinace kláves. Je to podobné, jako když si vytvoříte vlastní pomocí zkratek.

Událost OnKey je ve skutečnosti funkcí nebo metodou třídy Application, která má dva argumenty, jak je uvedeno níže:

Application.onkey Klíč, ["postup"]

The klíč je klíč nebo kombinace kláves, které chcete použít jako spoušť.

"Postup" je volitelný argument, který je názvem řetězce procedury nebo makra, které chcete spustit. Pokud proceduru nedefinujete, spustí se aktuální procedura.

Kam psát události na klíč?

Událost Onkey můžete napsat na libovolný normální modul. Budou fungovat v normálních modulech, ale nejprve budete muset spustit podprogram, který obsahuje pokyny pro klíč. Není to tak, že byste makro spustili pokaždé, abyste použili události Onkey. Pouze jednou budete potřebovat ke spuštění tohoto makra, když otevřete sešit.

Pokud nechcete spustit makro obsahující události Onkey, můžete je vložit do události workbook_open () v objektu sešitu. Aktivuje události Onkey, jakmile otevřete sešit, který obsahuje události Onkey.

Jak napsat obslužnou rutinu události Onkey?

Pokud tedy již máte některá makra, která chcete spustit se zadanou zkratkou, napište novou proceduru, která bude obsahovat seznam zkratek. Například zde mám makro, které ukazuje zprávu, která funguje.

Sub show_msg () MsgBox "Zkratka funguje" End Sub 

Nyní chci spustit toto makro, když stisknu kombinaci kláves CTRL+j. K tomu napíšu níže uvedený kód VBA.

Sub Activate_Onkey () Application.OnKey "^j", "show_msg" End Sub

"^" (carate) je pro klávesu CTRL. Níže je tabulka všech klíčových zkratek v excel VBA.

https://docs.microsoft.com/en-us/office/vba/api/excel.application.onkey

Jak aktivovat událost na klíč?

Pokud po napsání výše uvedeného kódu v modulu přejdete na zobrazení aplikace Excel a použijete klávesu CTRL+J, nebude to fungovat. Nejprve musíte spustit dílčí část, která definuje události OnKey. Spusťte tedy jednou sub Activate_Onkey () a pak to bude fungovat pro celou relaci. Jakmile sešit, který obsahuje definice Onkey, zavřete, přestane fungovat.

Definice Onkey můžete vložit do postupu, který chcete provést. Potom však budete muset makro spustit jednou ručně. Proto navrhuji vložit události Onkey do událostí Workbook_Open. Automaticky se aktivují všechny události Onkey.

Událost Ontime v Excelu

Jak název napovídá, událost Onkey spustí zadaný podprogram v nejbližším zadaném čase nebo po něm. Excel může být zaneprázdněn některými dalšími úkoly, jako je provádění souhrnu pokynů nebo režim kopírování v minulosti. V takovém případě to může oddálit událost Ontime. Proto je argument zobrazen jako nejbližší.

Syntaxe události OnTime

Událost Ontime je funkcí třídy Application. Má dva základní argumenty a dva volitelné argumenty.

Application.Ontime EarliestTime, "Procedura", [LatestTime], [Schedule]

TheEarliestTimeje čas, kdy chcete, aby se vaše procedura spustila. Excel však spustí zadané makro po definovaném nejranějším čase, pouze pokud je zdarma.

The "Postup" je název procedury, kterou chcete spustit v zadaný čas.

Jak jsem řekl, neexistuje žádná záruka, že aplikace Excel spustí váš postup v uvedeném čase. The LastestTimeje čas po nejranější době, kdy chcete aplikaci Excel poskytnout okno, aby bylo volné a provedlo váš úkol.

Pokud chcete deaktivovat naplánovanou událost OnTime, nastavteplán na nepravdu.

Kam napsat předběžnou událost?

Událost OnTime lze zapsat do libovolného modulu. Budete muset spustit událost obsahující postup pro aktivaci události.

Pokud chcete, aby se vaše událost aktivovala hned, jak otevřete sešit, který událost obsahuje, vložte ji do události workbook_open. Aktivuje událost, jakmile otevřete kód obsahující událost v aplikaci Excel.

Jak napsat událost Ontime?

Řekněme, že máte podprogram, který zobrazuje aktuální datum a čas

Sub show_msg () MsgBox "Aktuální datum a čas je" & Nyní Konec Sub

Nyní, pokud chcete, aby se tento postup spustil po 5 sekundách spuštění jiného makra, budete muset vložit tento kód.

Sub OnTimeTest () '-některé další úkoly Application.ontime Now + (5/24/60/60), "show_msg" End Sub

Jakmile spustíte podprogram OnTimeTest, po pěti sekundách jeho spuštění spustí podprogram show_msg. Bude tedy dobré, když budete chtít něco dělat po několika opakováních, použijte výše uvedenou strukturu.

Pokud chcete, aby se vaše makro spustilo po každých několika sekundách/minutách/hodinách/atd., Můžete tuto funkci zavolat. Šlo by o jakýsi rekurzivní podprogram.

Sub OnTimeTest () MsgBox "Aktuální datum a čas je" & Now Application.ontime Now + (5/24/60/60), "OnTimeTest" End Sub

Výše uvedený podprogram se spustí po každých pěti sekundách, jakmile jej spustíte.

Takže ano, lidi, toto jsou události v aplikaci Excel VBA. Některé z výše uvedených kategorií mají mnoho různých spouštěčů událostí. Samozřejmě zde nemohu vysvětlit všechny. Z toho bude dlouhý článek. Toto byl jen úvod do událostí dostupných v Excelu VBA. Další informace získáte pomocí odkazů vložených do článků. Níže jsem zmínil některé související články. Můžete si je také přečíst.

Máte -li jakékoli pochybnosti týkající se tohoto článku nebo jakékoli jiné myšlenky aplikace Excel/VBA, zeptejte se nás v sekci komentáře níže.

Události listu v aplikaci Excel VBAZpět nahoru Dejte nám zpětnou vazbu Řešení Událost listu je opravdu užitečná, když chcete, aby se vaše makra spustila, když na listu dojde k zadané události.

Události sešitu pomocí VBA v Microsoft Excelu | Události sešitu fungují na celém sešitu. Protože jsou všechny listy součástí sešitu, fungují na nich i tyto události.

Zabraňte spuštění automacro/eventmacro pomocí VBA v Microsoft Excelu | Chcete -li zabránit spuštění makra auto_open, použijte klávesu shift.

Události objektů grafu pomocí VBA v aplikaci Microsoft Excel | Grafy jsou složité objekty a je k nim připojeno několik komponent. K vytváření Chart Events používáme modul Class.

Oblíbené články:

50 zkratek aplikace Excel pro zvýšení produktivity | Získejte rychleji svůj úkol. Těchto 50 klávesových zkratek vám umožní pracovat v Excelu ještě rychleji.

Funkce VLOOKUP v Excelu | Toto je jedna z nejpoužívanějších a nejoblíbenějších funkcí Excelu, která slouží k vyhledávání hodnot z různých rozsahů a listů.

COUNTIF v aplikaci Excel 2016 | Pomocí této úžasné funkce spočítejte hodnoty s podmínkami. K počítání konkrétní hodnoty nepotřebujete filtrovat data. Funkce Countif je nezbytná pro přípravu řídicího panelu.

Jak používat funkci SUMIF v aplikaci Excel | Toto je další základní funkce řídicího panelu. To vám pomůže shrnout hodnoty za konkrétních podmínek.