Udalosti nie sú ničím iným, iba sa dejú. Rovnako je to aj v Exceli. Niekedy však chceme, aby sa niečo stalo automaticky, keď dôjde k určitej udalosti. Aby sme niečo urobili, keď sa v programe Excel stane konkrétna udalosť, použijeme udalosť Excel VBA.
Obslužné rutiny udalostí programu Excel VBA: Typy
V programe Excel VBA je hlavne 7 typov nástrojov na spracovanie udalostí.
- Udalosti aplikácie
- Udalosti zošita
- Pracovný list Udalosti
- Udalosti grafu
- Udalosti používateľského formulára
- Kombinácia klávesov Udalosti (udalosti klávesových skratiek)
- Udalosti načas
Poďme ich preskúmať jeden po druhom.
Udalosti aplikácie v programe Excel
Udalosti na úrovni aplikácie sa spustia, keď je aplikácia (Excel) zatvorená, otvorená, aktivovaná, chránená, nechránená atď.
Na úrovni aplikácie existuje viac ako 50 typov udalostí. Nemôžeme tu teda diskutovať o všetkých.
Rozsah akcie aplikácie:
Tieto udalosti budú fungovať vo všetkých zošitoch programu Excel, pokiaľ bude otvorený zošit obsahujúci kód. Ak ste napríklad vytvorili udalosť na úrovni aplikácie, ktorá vám povie názov hárka aktívneho hárka, spustí sa pri každej aktivácii hárka akéhokoľvek zošita.
Ako vytvoriť obslužný program udalostí aplikácie vo VBA?
Vytvorenie udalosti aplikácie je trochu zložité. Podrobne som to tu vysvetlil na príklade.
Udalosti zošita v programe Excel
Rozsah akcie zošita
Udalosti zošita fungujú na celom zošite, ktorý obsahuje kód. Udalosť môže zošit otvoriť, zavrieť, aktivovať, deaktivovať, zmeniť hárok atď.
Kam písať akcie zošita?
Udalosti zošita sú zapísané na objekt zošita.
Ako napísať udalosť zošita?
Nasleduj tieto kroky:
1. V Prieskumníkovi projektov dvakrát kliknite na objekt zošita. Zobrazí sa oblasť na zápis kódu. Tu sú zapísané všetky udalosti v rozsahu pracovného zošita.
2. V ľavej hornej časti oblasti na písanie kódu sa zobrazí rozbaľovacia ponuka. Kliknite na rozbaľovaciu ponuku a vyberte zošit. Štandardne je to všeobecné.
3. Hneď ako vyberiete zošit z rozbaľovacej ponuky vľavo, štandardne sa vloží podprogram udalosti zošit_otvorený. Ak však chcete použiť podprogram inej udalosti, vyberte ho v rozbaľovacej ponuke vpravo hore. Zobrazí sa zoznam všetkých dostupných udalostí zošita.
4. Vyberte si udalosť, ktorú potrebujete. Kvôli príkladu som vybral udalosť SheetActivate. Táto udalosť sa spustí pri každom výbere listu v zošite s kódom.
Príklad udalosti zošita:Toto je jednoduchý príklad. Chcem len zobraziť názov aktivovaného pracovného hárka. Na to jednoducho použijem udalosť SheetActivate v objekte Zošit.
Súkromný sub Workbook_SheetActivate (ByVal Sh As Object) MsgBox Sh.Name & "Activated" End Sub
Teraz, kedykoľvek bude aktivovaný nový hárok v tomto zošite, sa spustí táto udalosť. Budete vyzvaní na masáž, názov listu aktivovaný.
Viem, že tento kód nie je taký užitočný, ale medzi tieto riadky môžete vložiť akúkoľvek sadu pokynov. Funkcie a podprogramy môžete volať zo samotných modulov.
Udalosti pracovného hárka v programe Excel
Všetky udalosti zacielené na rozsah a bunky sú zapísané v udalostiach pracovného hárka. Tu si môžete prečítať o udalostiach v pracovnom hárku.
Rozsah udalosti pracovného hárka
Udalosti pracovného hárka sú zacielené na rozsahy a bunky konkrétneho pracovného hárka. Udalosť pracovného hárka sa spustí pri udalostiach, ktoré sa vyskytnú v konkrétnom hárku (pracovný hárok obsahujúci kód).
Kde sú zapísané udalosti pracovného hárka?
Udalosti pracovného hárka sú zapísané na objekt pracovného hárka.
Ako napísať kód na spracovanie udalostí pracovného hárka?
Je to rovnaké ako udalosti v zošite.
1. V Prieskumníkovi projektov dvakrát kliknite na objekt pracovného hárka. V pracovnom hárku sa zobrazí oblasť písania kódu. Do týchto pracovných hárkov sú zapísané všetky udalosti s rozsahom pracovného hárka.
2. V ľavej hornej časti oblasti na písanie kódu sa zobrazí rozbaľovacia ponuka. Kliknite na rozbaľovaciu ponuku a vyberte pracovný list. Štandardne je to všeobecné.
3. Keď v rozbaľovacej ponuke vľavo vyberiete pracovný hárok, v predvolenom nastavení sa vloží podprogram akcie list_selectionChange. Ak však chcete použiť podprogram inej udalosti, vyberte ho v rozbaľovacej ponuke vpravo hore. Zobrazí sa zoznam všetkých dostupných udalostí pracovného hárka.
4. Vyberte si udalosť, ktorú potrebujete. Kvôli príkladu som vybral udalosť Worksheet_SelectionChange (ByVal Target As Range). Táto udalosť sa spustí pri každej zmene výberu rozsahu na hárku.
Pracovný list Príklad udalosti
Súbor Sub Subheet_SelectionChange (cieľ podľa rozsahu podľa cieľa) MsgBox „Ste v“ & Target.Address Koniec Sub
Vyššie uvedená udalosť je zapísaná v hárku 1 zošita. Táto udalosť zobrazí adresu rozsahu, ktorú ste vybrali na hárku obsahujúcom kód, kedykoľvek zmeníte výber rozsahu. Nasleduje niekoľko ďalších príkladov udalostí pracovného hárka.
Udalosti pracovného hárka sa väčšinou používajú v dynamických dashboardoch. Bunky môžete použiť ako začiarkavacie políčka alebo aktívne výbery, aby boli vaše informačné panely dynamické.
Nasleduje niekoľko ďalších príkladov udalostí pracovného hárka.
Použitie udalosti zmeny pracovného hárka na spustenie makra po vykonaní akejkoľvek zmeny
V prípade zmeny vykonanej na hárku v určenom rozsahu spustite makro
Najjednoduchší kód VBA na zvýraznenie aktuálneho použitia riadkov a stĺpcov
Udalosti v grafe
V programe Excel existujú dva typy udalostí grafu. Jednou z nich sú bežne vložené grafy, o ktorých sme tu podrobne diskutovali. Je to veľmi podobné udalostiam na úrovni aplikácie.
Ďalším je graf. Toto sú špeciálne listy, ktoré obsahujú iba grafy prepojené s údajmi na niektorých ďalších listoch.
Pokiaľ ide o udalosti, sú veľmi podobné bežným listom.
Kam písať udalosti v grafoch?
Udalosti grafu sú zapísané do objektu grafu. Oblasť kódu otvoríte dvojitým kliknutím na list grafu.
Ako písať udalosti v grafe?
Nasleduj tieto kroky:
1. V Prieskumníkovi projektov dvakrát kliknite na objekt listu grafu, aby sa otvorila oblasť kódu. Tu sú zapísané všetky konkrétne udalosti súvisiace s tabuľkou.
2. V pravom hornom rohu oblasti s kódom uvidíte obvyklú rozbaľovaciu ponuku. V rozbaľovacej ponuke vyberte graf.
3. V pravom rohu vyberte požadovanú udalosť.
Ak chcem napríklad niečo urobiť hneď, ako si používateľ vyberie graf, použijem udalosť Chart_Activate.
Príklad: Udalosť v grafe
Súkromný čiastkový graf_Activate () MsgBox Koniec grafu „Graf sa obnovuje“
Vyššie uvedený kus kódu sa spustí, hneď ako vyberiete list grafu. Tu sa iba zobrazí správa, že graf je obnovený, ale môžete urobiť veľa. Pred zobrazením tejto správy môžete podobne ako dynamicky vybrať rozsah údajov pre graf.
Nasleduje niekoľko ďalších príkladov udalostí grafu:
Udalosti UserForm
Udalosť v užívateľskom formulári je rovnaká ako ostatné udalosti. Existuje niekoľko udalostí, ktoré sa vyskytujú v užívateľskom formulári. Tieto udalosti môžete použiť na spustenie udalostí.
Kam písať udalosti užívateľského formulára?
Ak chcete napísať udalosť používateľského formulára, musíte najskôr vložiť UserForm.
1. Potom kliknite pravým tlačidlom myši na UserForm a kliknite na kód zobrazenia. Teraz sa otvorí oblasť kódu.
2. Teraz v ľavom hornom rohu vyberte formulár Userform.
3. V ľavom rozbaľovacom zozname vyberte udalosť, ktorú chcete použiť na spustenie spustenia kódu.
4. Medzi kód udalosti kódu zadajte požadovaný kód.
Nasledujúci príklad jednoducho zobrazuje správu, keď je aktivovaný užívateľský formulár.
Private Sub UserForm_Activate () MsgBox „Dobrý deň, dvakrát prosím overte svoje informácie.“ Koniec pod
Vyššie uvedený kód iba zobrazuje správu, ale pomocou tejto udalosti môžete formulár vopred vyplniť niektorými predvolenými vstupmi alebo ho vyplniť pomocou informácií o hárku.
Udalosť na kľúč
Tieto udalosti sa spustia po stlačení zadaného klávesu alebo kombinácie klávesov. Je to podobné ako vytváranie svojich pomocou skratiek.
Udalosť OnKey je v skutočnosti funkciou alebo metódou triedy Application, ktorá má dva argumenty, ako je uvedené nižšie:
Application.onkey Kľúč, ["postup"]
The kľúč je kláves alebo kombinácia klávesov, ktoré chcete použiť ako spúšťač.
"Postup" je voliteľný argument, ktorý je názvom reťazca procedúry alebo makra, ktoré chcete spustiť. Ak nezadefinujete postup, spustí sa aktuálny postup.
Kam napísať akcie na kľúč?
Udalosť Onkey môžete napísať na akýkoľvek normálny modul. Budú fungovať v normálnych moduloch, ale najskôr budete potrebovať na spustenie podprogramu, ktorý obsahuje pokyny na kľúč. Nie je to tak, že by ste makro spustili vždy, keď chcete použiť udalosti Onkey. Pri otvorení zošita budete musieť toto makro spustiť iba raz.
Ak nechcete spustiť makro, ktoré obsahuje udalosti Onkey, môžete ich vložiť do udalosti workbook_open () v objekte zošita. Aktivuje udalosti Onkey ihneď po otvorení zošita, ktorý obsahuje udalosti Onkey.
Ako napísať obslužný program udalostí Onkey?
Ak teda už máte makrá, ktoré chcete spustiť so zadanou skratkou, napíšte nový postup, ktorý bude obsahovať zoznam skratiek. Napríklad tu mám makro, ktoré ukazuje, že skratka funguje.
Sub show_msg () MsgBox "Skratka funguje" Koniec Pod
Teraz chcem spustiť toto makro, keď stlačím kombináciu klávesov CTRL+j. Aby som to urobil, napíšem nižšie uvedený kód VBA.
Sub Activate_Onkey () Application.OnKey "^j", "show_msg" End Sub
„^“ (karate) je pre kláves CTRL. Nasleduje tabuľka všetkých kľúčových skratiek v programe Excel VBA.
https://docs.microsoft.com/en-us/office/vba/api/excel.application.onkey
Ako aktivovať udalosť na kľúč?
Po napísaní vyššie uvedeného kódu do modulu, ak prejdete na zobrazenie programu Excel a použijete kláves CTRL+J, nebude to fungovať. Najprv musíte spustiť sub, ktorý definuje udalosti OnKey. Spustite teda raz sub Activate_Onkey () a potom to bude fungovať pre celú reláciu. Keď zavriete zošit, ktorý obsahuje definície Onkey, prestane fungovať.
Definície Onkey môžete vložiť do postupu, ktorý chcete vykonať. Potom však budete musieť makro spustiť raz ručne. Preto navrhujem zaradiť udalosti Onkey do udalostí Workbook_Open. Automaticky sa aktivujú všetky udalosti Onkey.
Nadčasová udalosť v programe Excel
Ako naznačuje názov, udalosť Onkey spustí špecifikovaný podprogram v najskoršom určenom čase alebo po ňom. Excel môže byť zaneprázdnený niektorými inými úlohami, ako je napríklad vykonanie súhrnu pokynov alebo režim kopírovania v minulosti. V takom prípade to môže oddialiť udalosť Nadčas. Preto je argument uvedený ako najskôr.
Syntax udalosti OnTime
Udalosť Ontime je funkciou triedy Application. Obsahuje dva základné argumenty a dva voliteľné argumenty.
Application.Ontime EarliestTime, "Procedúra", [LatestTime], [Schedule]
TheEarliestTimeje čas, kedy chcete, aby sa váš postup spustil. Excel však spustí uvedené makro po definovanom najskoršom čase, iba ak je zadarmo.
The "Postup" je názov procedúry, ktorú chcete spustiť v zadanom čase.
Ako som už povedal, neexistuje žiadna záruka, že program Excel spustí váš postup v uvedenom čase. The LastestTimeje čas po najskoršom čase, počas ktorého bude mať okno programu Excel voľnosť a bude môcť vykonať vašu úlohu.
Ak chcete deaktivovať naplánovanú udalosť OnTime, nastavteharmonogram na nepravdu.
Kde napísať predbežnú udalosť?
Udalosť OnTime je možné zapísať do akéhokoľvek modulu. Budete musieť vykonať udalosť obsahujúcu postup na aktiváciu udalosti.
Ak chcete, aby sa vaša udalosť aktivovala hneď, ako otvoríte zošit obsahujúci udalosť, vložte ju do udalosti workbook_open. Udalosť sa aktivuje hneď, ako v programe Excel otvoríte kód obsahujúci udalosť.
Ako napísať predbežnú udalosť?
Povedzme, že máte podprogram, ktorý zobrazuje aktuálny dátum a čas
Sub show_msg () MsgBox „Aktuálny dátum a čas je“ & Teraz End Sub
Teraz, ak chcete, aby sa tento postup spustil po 5 sekundách spustenia iného makra, budete musieť vložiť tento kód.
Sub OnTimeTest () '-niektoré ďalšie úlohy Application.ontime Now + (5 /24 /60 /60), "show_msg" End Sub
Akonáhle spustíte podprogram OnTimeTest, po piatich sekundách jeho spustenia spustí podprogram show_msg. Bude teda dobré, ak budete chcieť urobiť niečo po niekoľkých opakovaniach niečoho iného, použite vyššie uvedenú štruktúru.
Ak chcete, aby sa vaše makro spustilo samo po každých niekoľkých sekundách/minútach/hodinách/atď., Môžete túto funkciu nazvať samotnou. Išlo by o akýsi rekurzívny podprogram.
Sub OnTimeTest () MsgBox „Aktuálny dátum a čas je“ & Now Application.ontime Now + (5 /24 /60 /60), „OnTimeTest“ End Sub
Vyššie uvedený podprogram sa spustí po každých piatich sekundách, akonáhle ho spustíte.
Takže áno, chlapci, toto sú udalosti v programe Excel VBA. Niektoré z vyššie uvedených kategórií majú mnoho rôznych spúšťačov udalostí. Tu samozrejme nemôžem vysvetliť všetky. Bude z toho dlhý článok. Toto bol len úvod do udalostí dostupných v programe Excel VBA. Ďalšie informácie nájdete v odkazoch vložených do článkov. Nižšie som spomenul niektoré súvisiace články. Môžete si ich aj prečítať.
Ak máte akékoľvek pochybnosti súvisiace s týmto článkom alebo akoukoľvek inou myšlienkou programu Excel/VBA, opýtajte sa nás v sekcii komentárov nižšie.
Udalosti pracovného hárka v programe Excel VBA| Udalosť pracovného hárka je skutočne užitočná, keď chcete, aby sa vaše makrá spustili, keď sa v hárku vyskytne zadaná udalosť.
Udalosti zošita pomocou jazyka VBA v programe Microsoft Excel | Udalosti zošita fungujú na celom zošite. Keďže všetky listy sú súčasťou pracovného zošita, tieto udalosti na nich tiež fungujú.
Zabráňte spusteniu programu automacro/eventmacro pomocou programu VBA v programe Microsoft Excel | Ak chcete zabrániť spusteniu makra auto_open, použite kláves Shift.
Graf udalostí objektu pomocou VBA v programe Microsoft Excel | Grafy sú komplexné objekty a je k nim pripojených niekoľko komponentov. Na vytváranie grafových udalostí používame modul Trieda.
Populárne články:
50 skratiek programu Excel na zvýšenie produktivity | Vykonajte svoju úlohu rýchlejšie. Týchto 50 skratiek vám umožní pracovať ešte rýchlejšie v Exceli.
Funkcia VLOOKUP v programe Excel | Toto je jedna z najpoužívanejších a najobľúbenejších funkcií programu Excel, ktorá sa používa na vyhľadávanie hodnôt z rôznych rozsahov a hárkov.
COUNTIF v Exceli 2016 | Počítajte hodnoty s podmienkami pomocou tejto úžasnej funkcie. Na počítanie konkrétnej hodnoty nepotrebujete filtrovať svoje údaje. Funkcia Countif je potrebná na prípravu palubnej dosky.
Ako používať funkciu SUMIF v programe Excel | Toto je ďalšia zásadná funkcia palubnej dosky. To vám pomôže zhrnúť hodnoty za konkrétnych podmienok.