Ako používať udalosti zošita vo VBA

Možno budete chcieť spustiť svoj úryvok z makra/VBA, keď je vybratý konkrétny zošit, Je vybraný list v zošite, bunka zmení svoju hodnotu, keď dôjde k dvojitému kliknutiu, keď sa pridá list atď. Vo všetkých týchto prípadoch používame Spracovateľ udalostí zošita. Obsluha udalostí nám pomáha spustiť kód VBA vždy, keď dôjde k určitej udalosti.

V tomto článku sa stručne dozvieme o každom obslužnom programe udalostí zošita.

Čo je nástroj na spracovanie udalostí zošita?

Obslužná rutina udalosti zošita je podprogram, ktorý je miestny v zošite. Tieto kódy fungujú iba na súčastiach zošita. To je samotný zošit, sú to listy a rozsahy.

Kde napísať kód obsluhy udalostí zošita?

Udalosti zošita sú zapísané iba do objektu zošita. Ak napíšete udalosť zošita do nejakého normálneho modulu, nevyskytne sa žiadna chyba, ale nebude fungovať.

Zapisovať do objektu zošita. Dvakrát naň kliknite alebo kliknite pravým tlačidlom myši a kliknite na kód zobrazenia. Zobrazí sa oblasť písania kódu.

Ako napísať do zošita kód pre konkrétnu udalosť?

Keď ste teraz v režime úprav, v rozbaľovacej ponuke v ľavom hornom rohu uvidíte všeobecné. Kliknite na rozbaľovaciu ponuku a vyberte zošit. V pravom hornom rohu rozbaľovacej ponuky sa zobrazia všetky udalosti. Vyberte si, čo potrebujete, a kostrový kód pre túto udalosť bude napísaný za vás.

Každá udalosť má pevný názov procedúry. Toto sú vyhradené názvy podprogramov, ktoré začínajú zošitom_. Nemôžete ich použiť na iné podprogramy
(môžete, ale budú to normálne podprogramy).

Dôležité: Každý podprogram z tohto zoznamu pobeží na zadanej udalosti.

Jeden typ postupu zošita je možné napísať iba raz na jeden zošit. Ak napíšete dva rovnaké postupy spracovania udalostí do jedného zošita, bude to mať za následok chybu a žiadny z nich nebude vykonaný. Samozrejme, chybou budú nejednoznačné podprogramy.

Stručne sa zoznámime s každou z udalostí.
1. The Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) Udalosť

Táto udalosť sa spustí, keď vykonáme akúkoľvek zmenu v obsahu pracovných hárkov (formátovanie je vylúčené). Ak chcete niečo urobiť, ak dôjde k akejkoľvek zmene v ľubovoľnom hárku, potom bude kód nasledujúci:

 Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) 'do something Msgbox "done something" End Sub 

„Sh“ je vždy aktívny list. „Cieľ“ je vždy aktívna bunka.

Ďalší príklad: Ak sa zmení A1, možno budete chcieť vložiť dátum a čas do Cel, prl B1. V takom prípade použijeme udalosť workbook_sheetchange. Kód by vyzeral takto:

 Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$ A $ 1" Then Range ("B1"). Value2 = Format (Now (), "hh: mm: ss") End If Koniec pod 

Toto zacieli iba na bunku A1 na každom hárku, pretože sme neurčili objekt „sh“.

2. The Workbook_Activate () Udalosť

Táto udalosť sa spustí, keď sa aktivuje kód udalosti obsahujúci zošit. Kostrový kód tejto udalosti je:

 Súkromný čiastkový zošit_Activate () Koniec pod

Jednoduchým príkladom je zobrazenie názvu zošita, keď je vybraný.

 Súkromný čiastkový zošit_Activate () MsgBox „Ste v zošite“ a aktívny pracovný zošit.Názov Koniec 

Hneď ako prídete do zošita, ktorý obsahuje tento kód, udalosť sa spustí a zobrazí sa správa, že „Ste na názve zošita“ (hárok2 je v mojom prípade).
3. The Zošit_otvorený () Udalosť

Táto jedna z najčastejšie kladených otázok, ako spustiť makro hneď, ako sa zošit otvorí. Toto je odpoveď. Táto udalosť zošita sa spustí ihneď po otvorení zošita. Na rozdiel od Workbook_Activate () sa tento kód spustí iba raz, nie vždy, keď je aktivovaný.

Private Sub Workbook_Open () 'váš kód' End Sub 

Nasledujúci príklad udalosti Workbook_Open jednoducho zobrazí uvítaciu správu, keď otvoríte kód obsahujúci zošit.

 Súkromný čiastkový zošit_Open () MsgBox Koniec „Sub Vitajte v hlavnom súbore“

4. The Zošit_Deaktivovať () Udalosť

Táto udalosť sa spustí pri opustení kódu obsahujúceho zošit. Inými slovami, ak chcete pri prepínaní zošita niečo robiť, napríklad skrývať listy alebo čokoľvek iné, použite túto udalosť VBA. Syntax je:

 Private Sub Workbook_Deactivate () 'your code' End Sub 

Nasledujúci príklad udalosti Workbook_Deativate jednoducho zobrazí správu, že ste opustili hlavný hárok, keď tento hárok opustíte.

 Súkromný čiastkový zošit_Deaktivovať () MsgBox „Opustili ste hlavný list“ End Sub 

5. The Zošit_BeforeClose () Udalosť

Táto udalosť sa spustí, keď potvrdíte odstránenie udalosti obsahujúcej hárok VBA. Syntax je jednoduchá:

 Súkromný čiastkový zošit_BeforeClose (Zrušiť ako booleovský) Koncový pod 

Ak chcete ponechať zošit otvorený, môžete položku Storno nastaviť na hodnotu True.
Nasledujúci kód sa vás opýta, či chcete uložiť obsah zošita, ktorý sa má zavrieť.

 Private Sub Workbook_BeforeClose (Cancel as Boolean) ans = MsgBox ("Chcete uložiť obsah tohto zošita?", VbYesNo) If ans = True Then thisworkbook.save End If End Sub 

6. The Workbook_BeforeSave (ByVal SaveAsUI ako logická hodnota, zrušiť ako logická hodnota) Udalosť

Táto udalosť sa spustí, keď je zošit uložený. Syntax je jednoduchá:

 Súkromný čiastkový zošit_BeforeSave (ByVal SaveAsUI ako Boolean, Zrušiť ako Boolean) Koniec Sub 

SaveAsUI je nastavené na True, ak dôjde k zmene v zošite (nie vo VBA).

Storno je možné nastaviť na hodnotu True, ak chcete zošit ponechať neuložený.

Nasledujúci kód sa vás opýta, či chcete uložiť obsah zošita, ktorý sa má uložiť.

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel as Boolean) ans = MsgBox ("Naozaj chcete uložiť obsah tohto zošita?", VbYesNo) If ans = False Then Cancel = True End If End Sub 

7. The Workbook_BeforeSave (ByVal SaveAsUI ako logická hodnota, zrušiť ako logická hodnota) Udalosť

Táto udalosť sa spustí, keď je zošit uložený. Syntax je jednoduchá:

 Súkromný čiastkový zošit_BeforeSave (ByVal SaveAsUI ako logická hodnota, Zrušiť ako logická hodnota) Koniec 

SaveAsUI je nastavené na True, ak dôjde k zmene v zošite (nie vo VBA).

Storno je možné nastaviť na hodnotu True, ak chcete zošit ponechať neuložený.

Nasledujúci kód sa vás opýta, či chcete uložiť obsah zošita, ktorý sa má uložiť.

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel as Boolean) ans = MsgBox ("Naozaj chcete uložiť obsah tohto zošita?", VbYesNo) If ans = False Then Cancel = True End If End Sub 

8. The Workbook_NewSheet (ByVal Sh As Object) Udalosť

Táto udalosť sa spustí, keď do zošita pridáte nový list. Syntax je jednoduchá:

 Súkromný čiastkový zošit_Nový list (objekt ByVal Sh ako objekt) Koniec pod 

Sh je listový objekt. Typ je v skutočnosti hlavným objektom, takže ak pridáme hárok grafu, list makra alebo dialógový list, udalosť stále funguje.

Nasledujúci kód pridá a zobrazí názov listu, ktorý bol novo pridaný.

 Súbor Sub Workbook_NewSheet (objekt ByVal Sh As) MsgBox „Pridali ste nový hárok.“ & Sh.Name Koniec Sub 

Existuje mnoho ďalších udalostí objektu zošita. Nemôžeme tu diskutovať o všetkých. Ak sa chcete dozvedieť o nejakej konkrétnej udalosti, opýtajte sa v sekcii komentárov nižšie. Dúfam, že sa mi v tomto článku podarilo vysvetliť základy udalostí zošita. Dajte mi vedieť, či vám to pomohlo v nižšie uvedenej sekcii komentárov.
Súvisiace články:

Použitie udalosti zmeny pracovného hárka na spustenie makra po vykonaní akejkoľvek zmeny | Na spustenie makra vždy, keď sa aktualizuje hárok, preto používame udalosti pracovného hárka VBA.

V prípade zmeny vykonanej na hárku v určenom rozsahu spustite makro | Na spustenie kódu makra pri zmene hodnoty v určenom rozsahu použite tento kód VBA. Zistí všetky zmeny vykonané v uvedenom rozsahu a spustí udalosť.

Najjednoduchší kód VBA na zvýraznenie aktuálneho použitia riadkov a stĺpcov | Pomocou tohto malého útržku VBA zvýraznite aktuálny riadok a stĺpec listu.

Populárne články:

50 skratiek programu Excel na zvýšenie produktivity | Vykonajte svoju úlohu rýchlejšie. Týchto 50 skratiek vám v Exceli prácu ešte zrýchli.

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 nie je potrebné filtrovať ú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.

Vám pomôže rozvoju miesta, zdieľať stránku s priateľmi

wave wave wave wave wave