Kako uporabljati dogodke iz delovnega zvezka v VBA

Kazalo:

Anonim

Morda boste želeli zagnati svoj delček makra/VBA, ko je izbran določen delovni zvezek, Izbran je list v delovnem zvezku, celica spremeni svojo vrednost, ko se zgodi dvojni klik, ko je dodan list itd. V vseh teh primerih uporabljamo Obdelovalec dogodkov v delovnem zvezku. Vodnik dogodkov nam pomaga zagnati kodo VBA, kadar koli se zgodi določen dogodek.

V tem članku bomo na kratko spoznali vsak upravljavec dogodkov v delovnem zvezku.

Kaj je upravljavec dogodkov v delovnem zvezku?

Obdelovalec dogodkov v delovnem zvezku je podprogram, ki je lokalni za delovni zvezek. Ta koda deluje samo na sestavnih delih delovnega zvezka. To je sam delovni zvezek, njegovi listi in obsegi.

Kje napisati kodo za obravnavo dogodkov v delovnem zvezku?

Dogodki delovnega zvezka so zapisani samo v objektu delovnega zvezka. Če dogodek v delovnem zvezku napišete v kakšen običajen modul, ne bo prišlo do napake, ampak preprosto ne bodo delovale.

Za pisanje v objekt delovnega zvezka. Dvokliknite nanjo ali z desno tipko miške in kliknite kodo pogleda. Prikazalo se bo območje za pisanje kode.

Kako zapisati kodo za določen dogodek v delovni zvezek?

Zdaj, ko ste v načinu za urejanje, boste v spustnem meniju v zgornjem levem kotu videli splošno. Kliknite spustni meni in izberite delovni zvezek. V spustnem meniju v zgornjem desnem kotu bodo prikazani vsi dogodki. Izberite, kar potrebujete, in za vas bo napisana skeletna koda za ta dogodek.

Vsak dogodek ima določeno ime postopka. To so rezervirana imena podprogramov, ki se začnejo z delovnim zvezkom_. Ne morete jih uporabiti za druge podprograme
(lahko, vendar bodo normalne podprograme).

Pomembno: Vsaka podprogram s tega seznama se bo izvajala ob podanem dogodku.

Eno vrsto postopka dogodka v delovnem zvezku je mogoče zapisati samo enkrat v en delovni zvezek. Če v en delovni zvezek napišete dva enaka postopka obravnave dogodkov, bo prišlo do napake in nobeden od njiju ne bo izveden. Seveda bodo napake dvoumne podprograme.

Na kratko se seznanimo z vsakim dogodkom.
1. The Workbook_SheetChange (ByVal Sh kot objekt, cilj ByVal kot obseg) Dogodek

Ta dogodek se sproži, ko spremenimo vsebovanje delovnih listov (oblikovanje izključeno). Če želite na katerem koli listu narediti nekaj, bo koda naslednja:

 Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) 'naredi nekaj Msgbox "naredil nekaj" End Sub 

"Sh" je vedno aktiven list. "Cilj" je vedno aktivna celica.

Še en primer: Če se A1 spremeni, boste morda želeli datum in čas vnesti v Cel, prl B1. V tem primeru uporabimo dogodek workbook_sheetchange. Koda bi izgledala takole:

 Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) Če je Target.Address = "$ A $ 1" Potem obseg ("B1"). Vrednost2 = Oblika (Zdaj (), "hh: mm: ss") Konec Če End Sub 

To bo ciljalo samo na celico A1 na vsakem listu, ker nismo določili predmeta "sh".

2. The Delovni zvezek_Aktiviraj () Dogodek

Ta dogodek se sproži, ko se aktivira koda dogodka, ki vsebuje delovni zvezek. Skeletna koda za ta dogodek je:

 Private Sub Workbook_Activate () End Sub

Preprost primer je prikaz imena delovnega zvezka, ko je izbran.

 Private Sub Workbook_Activate () MsgBox "You are on workbook" & Activeworkbook.Name End Sub 

Takoj, ko pridete v delovni zvezek, ki vsebuje to kodo, se bo dogodek zagnal in prikazalo se bo sporočilo, da ste "v imenu delovnega zvezka" (list 2 je v mojem primeru).
3. The Workbook_Open () Dogodek

To je eno najpogostejših vprašanj, kako zagnati makro takoj, ko se odpre delovni zvezek. To je odgovor. Ta dogodek delovnega zvezka se izvede takoj, ko se delovni zvezek odpre. Za razliko od Workbook_Activate () se ta koda zažene le enkrat, ne pa vsakič, ko je aktivirana.

Private Sub Workbook_Open () 'your code' End Sub 

Spodnji primer dogodka Workbook_Open bo preprosto odprl pozdravno sporočilo, ko odprete kodo, ki vsebuje delovni zvezek.

 Private Sub Workbook_Open () MsgBox "Dobrodošli v glavni datoteki" End Sub

4. The Delovni zvezek_Deaktiviraj () Dogodek

Ta dogodek se sproži, ko zapustite kodo, ki vsebuje delovni zvezek. Z drugimi besedami, če želite pri menjavi delovnega zvezka narediti nekaj, na primer skriti liste ali karkoli drugega, uporabite ta dogodek VBA. Sintaksa je:

 Private Sub Workbook_Deactivate () 'your code' End Sub 

Spodnji primer dogodka Workbook_Deativate bo preprosto prikazal sporočilo, da ste zapustili glavni list, ko boste zapustili ta list.

 Private Sub Workbook_Deactivate () MsgBox "You Left The Master Sheet" End Sub 

5. The Delovni zvezek_BeforeClose () Dogodek

Ta dogodek se sproži, ko potrdite brisanje lista dogodkov VBA. Sintaksa je preprosta:

 Private Sub Workbook_BeforeClose (Cancel as Boolean) End Sub 

Preklic lahko nastavite na true, če želite, da je delovni zvezek odprt.
Spodnja koda vas bo vprašala, ali želite shraniti vsebino delovnega zvezka, ki se bo približal.

 Private Sub Workbook_BeforeClose (Cancel as Boolean) ans = MsgBox ("Ali želite shraniti vsebino tega delovnega zvezka?", VbYesNo) If ans = True Potem to delovno zvezo shranite End If End Sub 

6. The Workbook_BeforeSave (ByVal SaveAsUI kot Boolean, Cancel As Boolean) Dogodek

Ta dogodek se sproži, ko je delovni zvezek shranjen. Sintaksa je preprosta:

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI kot Boolean, Cancel As Boolean) End Sub 

SaveAsUI je nastavljen na True, če pride do spremembe v delovnem zvezku (ne v VBA).

Preklic lahko nastavite na true, če želite, da delovni zvezek ostane neshranjen.

Spodnja koda vas bo vprašala, ali želite shraniti vsebino delovnega zvezka, ki ga želite shraniti.

 Zasebni pod -delovni zvezek_BeforeSave (ByVal SaveAsUI Kot Boolean, Prekliči kot Boolean) ans = MsgBox ("Ali res želite shraniti vsebino tega delovnega zvezka?", VbYesNo) If ans = False Potem Cancel = True End If End Sub 

7. The Workbook_BeforeSave (ByVal SaveAsUI kot Boolean, Cancel As Boolean) Dogodek

Ta dogodek se sproži, ko je delovni zvezek shranjen. Sintaksa je preprosta:

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI kot Boolean, Cancel As Boolean) End Sub 

SaveAsUI je nastavljen na True, če pride do spremembe v delovnem zvezku (ne v VBA).

Preklic lahko nastavite na true, če želite, da delovni zvezek ostane neshranjen.

Spodnja koda vas bo vprašala, ali želite shraniti vsebino delovnega zvezka, ki ga želite shraniti.

 Zasebni pod -delovni zvezek_BeforeSave (ByVal SaveAsUI Kot Boolean, Prekliči kot Boolean) ans = MsgBox ("Ali res želite shraniti vsebino tega delovnega zvezka?", VbYesNo) If ans = False Potem Cancel = True End If End Sub 

8. The Workbook_NewSheet (ByVal Sh kot predmet) Dogodek

Ta dogodek se sproži, ko v delovni zvezek dodate nov list. Sintaksa je preprosta:

 Zasebni pod delovni zvezek_novski list (ByVal Sh kot objekt) Konec pod 

Sh je predmet lista. Vrsta je dejansko osrednji objekt, tako da dogodek še vedno deluje, če dodamo list grafikona, list makra ali pogovorni list.

Spodnja koda bo dodala in prikazala ime lista, ki je na novo dodan.

 Private Sub Workbook_NewSheet (ByVal Sh As Object) MsgBox "Dodali ste nov list." & Sh.Name End Sub 

Obstaja veliko več dogodkov predmeta delovnega zvezka. Tukaj o vseh ne moremo razpravljati. Če želite izvedeti o kakšnem posebnem dogodku, vprašajte v spodnjem razdelku s komentarji. Upam, da sem lahko v tem članku razložil osnove dogodkov v delovnem zvezku. Sporočite mi, če vam je pomagalo v spodnjem razdelku s komentarji.
Povezani članki:

Uporaba dogodka spremembe delovnega lista za zagon makra, ko pride do kakršne koli spremembe | Zato za zagon makra vsakič, ko se list posodobi, uporabljamo dogodke delovnega lista VBA.

Zaženite makro, če je na listu v določenem obsegu prišlo do kakršne koli spremembe | Če želite zagnati kodo makra, ko se vrednost v določenem obsegu spremeni, uporabite to kodo VBA. Zazna vsako spremembo v določenem obsegu in sproži dogodek.

Najpreprostejša koda VBA za označevanje trenutne vrstice in stolpca | S tem majhnim delčkom VBA označite trenutno vrstico in stolpec lista.

Priljubljeni članki:

50 bližnjic v Excelu za večjo produktivnost | Poskrbite, da bo vaša naloga hitrejša. Teh 50 bližnjic bo vaše delo v Excelu še pospešilo.

Funkcija VLOOKUP v Excelu | To je ena najpogosteje uporabljenih in priljubljenih funkcij programa Excel, ki se uporablja za iskanje vrednosti iz različnih obsegov in listov.

COUNTIF v Excelu 2016 | Štejte vrednosti s pogoji s to neverjetno funkcijo. Za štetje določene vrednosti vam ni treba filtrirati podatkov. Funkcija Countif je bistvena za pripravo vaše armaturne plošče.

Kako uporabljati funkcijo SUMIF v Excelu | To je še ena bistvena funkcija armaturne plošče. To vam pomaga povzeti vrednosti za posebne pogoje.