Dogodki v Excelu VBA

Kazalo:

Anonim

Na splošno dogodki niso nič drugega kot dogajanje. Enako je v Excelu. Včasih pa želimo, da se ob določenem dogodku nekaj zgodi samodejno. Če želimo nekaj narediti, ko se v Excelu zgodi določen dogodek, uporabimo dogodek Excel VBA.

Vodniki dogodkov Excel VBA: vrste

V Excelu VBA je v glavnem 7 vrst upravljavcev dogodkov.

  1. Dogodki aplikacije
  2. Dogodki iz delovnega zvezka
  3. Dogodki na delovnem listu
  4. Dogodki na grafikonu
  5. Dogodki na obrazcu uporabnika
  6. Dogodki s kombinacijo tipk (bližnjični dogodki)
  7. Pravočasni dogodki

Raziščimo jih enega za drugim.

Dogodki v programu Excel

Dogodki na ravni aplikacije se sprožijo, ko je aplikacija (Excel) zaprta, odprta, aktivirana, zaščitena, nezaščitena itd.

Na ravni aplikacije je več kot 50 vrst dogodkov. Zato o vseh tukaj ne moremo razpravljati.

Obseg prijavnega dogodka:

Ti dogodki bodo delovali na vseh delovnih zvezkih programa Excel, dokler je odprta koda, ki vsebuje delovni zvezek. Če ste na primer ustvarili dogodek na ravni aplikacije, ki vam pove ime lista aktivnega lista, se bo sprožil pri vsaki aktivaciji lista katerega koli delovnega zvezka.

Kako ustvariti upravljalnik dogodkov aplikacije v VBA?

Ustvarjanje dogodka aplikacije je nekoliko zapleteno. Tukaj sem to podrobno razložil s primerom.

Dogodki v delovnem zvezku v Excelu

Obseg dogodka v delovnem zvezku

Dogodki v delovnem zvezku delujejo na celotnem delovnem zvezku, ki vsebuje kodo. Dogodek lahko delovni zvezek odpre, zapre, aktivira, deaktivira, spremeni list itd.

Kam pisati dogodke v delovnem zvezku?

Dogodki delovnega zvezka so zapisani na objektu delovnega zvezka.

Kako napisati dogodek delovnega zvezka?

Sledite tem korakom:

1. V raziskovalcu projektov dvokliknite predmet delovnega zvezka. Prikaže se območje za pisanje kode. Tukaj so zapisani vsi dogodki s področjem uporabe delovnega zvezka.

2. V zgornjem levem kotu območja za pisanje kode boste videli spustni meni. Kliknite spustni meni in izberite delovni zvezek. Privzeto je splošno.

3. Ko iz spustnega menija na levi izberete delovni zvezek, bo privzeto vstavil podprogram dogodka workbook_open. Če pa želite uporabiti drugo podprogram dogodka, jo izberite v spustnem meniju zgoraj desno. Navedel bo vse razpoložljive dogodke v delovnem zvezku.

4. Izberite dogodek, ki ga potrebujete. Zaradi primera izberem dogodek SheetActivate. Ta dogodek se sproži pri vsaki izbiri lista v kodi, ki vsebuje delovni zvezek.

Primer dogodka v delovnem zvezku:To je preprost primer. Želim samo prikazati ime delovnega lista, ki je aktiviran. V ta namen preprosto uporabim dogodek SheetActivate v objektu Delovni zvezek.

Zasebna pod Workbook_SheetActivate (ByVal Sh As Object) MsgBox Sh.Name & "Activated" End Sub 

Zdaj, ko se aktivira nov list v tem delovnem zvezku, se bo ta dogodek sprožil. Pozvani boste z masažo, aktivirano je ime lista.

Vem, da ta koda ni tako uporabna, vendar lahko v te vrstice vnesete poljuben nabor navodil. Funkcije in podprograme lahko kličete iz samih modulov.

Dogodki na delovnem listu v Excelu

Vsi dogodki, ki so ciljno usmerjeni na obseg in celice, so zapisani v dogodkih na delovnem listu. O dogodkih na delovnem listu lahko preberete tukaj.

Obseg dogodka na delovnem listu

Dogodki na delovnem listu so ciljno usmerjeni na obsege in celice določenega delovnega lista. Dogodek delovnega lista se bo sprožil pri dogodkih, ki se zgodijo na določenem delovnem listu (delovni list, ki vsebuje kodo).

Kje so zapisani dogodki na delovnem listu?

Dogodki delovnega lista so zapisani na objektu delovnega lista.

Kako napisati kodo za obravnavo dogodkov na delovnem listu?

Enako je z dogodki v delovnem zvezku.

1. V raziskovalcu projektov dvokliknite predmet delovnega lista. Za delovni list se prikaže območje za pisanje kode. Vsi dogodki z obsegom delovnega lista so zapisani na teh delovnih listih.

2. V zgornjem levem kotu območja za pisanje kode boste videli spustni meni. Kliknite spustni meni in izberite delovni list. Privzeto je splošno.

3. Ko iz spustnega menija na levi izberete delovni list, bo privzeto vstavil podprogram dogodka worksheet_selectionChange. Če pa želite uporabiti drugo podprogram dogodka, jo izberite v spustnem meniju zgoraj desno. Navedel bo vse razpoložljive dogodke na delovnem listu.

4. Izberite dogodek, ki ga potrebujete. Zaradi primera izberem dogodek Worksheet_SelectionChange (ByVal Target As Range). Ta dogodek se sproži ob vsaki spremembi izbire obsega na listu.

Primer dogodka na delovnem listu

Private Sub Worksheet_SelectionChange (ByVal Target As Range) MsgBox "You are in" & Target.Address End Sub 

Zgornji dogodek je zapisan v listu 1 delovnega zvezka. Ta dogodek bo prikazal naslov območja, ki ste ga izbrali na listu s kodo, kadar koli boste spremenili izbiro obsega. Spodaj je še nekaj primerov dogodkov na delovnem listu.

Dogodki na delovnem listu se večinoma uporabljajo na dinamičnih nadzornih ploščah. Celice lahko uporabite kot potrditvena polja ali aktivne izbire, da naredite nadzorne plošče dinamične.

Spodaj je še nekaj primerov dogodkov na delovnem listu.

Uporaba dogodka spremembe delovnega lista za zagon makra, ko pride do kakršne koli spremembe

Zaženite makro, če je na listu v določenem obsegu prišlo do kakršne koli spremembe

Najpreprostejša koda VBA za označevanje trenutne vrstice in stolpca

Dogodki na grafikonu

V Excelu obstajata dve vrsti dogodkov grafikona. Eden so običajno vgrajeni grafikoni, o katerih smo tukaj podrobno razpravljali. Podobno je dogodkom na ravni aplikacije.

Drugi je list z grafikoni. To so posebni listi, ki vsebujejo le grafikone, povezane s podatki na nekaterih drugih listih.

Ko gre za dogodke, so podobni običajnim listom.

Kam pisati dogodke v grafikonih?

Dogodki grafikona so zapisani v objektu grafikona. Samo dvakrat kliknite na list grafikona, da odprete območje s kodo.

Kako napisati dogodke na grafikonu?

Sledite tem korakom:

1. V raziskovalcu projektov dvokliknite predmet grafikona, da odprete področje kod. Tukaj so zapisani vsi posebni dogodki, povezani z grafikonom.

2. V zgornjem desnem kotu območja kode boste videli običajni spustni meni. V tem spustnem meniju izberite grafikon.

3. V desnem kotu izberite želeni dogodek.

Na primer, če želim nekaj narediti takoj, ko uporabnik izbere grafikon, bom uporabil dogodek Chart_Activate.

Primer: Dogodek na listu grafikona

Private Sub Chart_Activate () MsgBox "Grafikon je osvežen" End Sub 

Zgornji del kode se bo sprožil takoj, ko boste izbrali list grafikona. Tukaj bo prikazano samo sporočilo, da je grafikon osvežen, vendar lahko storite veliko. Tako kot lahko dinamično izberete obseg podatkov za grafikon, preden prikažete to sporočilo.

Spodaj je še nekaj primerov grafičnih dogodkov:

Dogodki UserForm

Dogodek uporabniškega obrazca je tako kot drugi dogodki. Na uporabniškem obrazcu se zgodi več dogodkov. Te dogodke lahko uporabite za sprožitev dogodkov.

Kam zapisati dogodke v obrazcu za uporabnike?

Če želite napisati dogodek uporabniškega obrazca, morate najprej vstaviti uporabniški obrazec.

1. Nato z desno miškino tipko kliknite obrazec za uporabnike in kliknite kodo pogleda. Zdaj se bo odprlo področje kod.

2. Zdaj v zgornjem levem kotu izberite Userform.

3. V levem spustnem meniju izberite dogodek, ki ga želite uporabiti za sprožitev kode.

4. Med kodo dogodka kode vnesite želeno kodo.

Spodnji primer preprosto prikazuje sporočilo, ko je uporabniški obrazec aktiviran.

Private Sub UserForm_Activate () MsgBox "Pozdravljeni, dvakrat preverite svoje podatke." End Sub 

Zgornja koda prikazuje samo sporočilo, vendar lahko ta dogodek uporabite za vnaprejšnje izpolnjevanje obrazca z nekaterimi privzetimi vhodi ali za uporabo podatkov o listu.

Dogodek na ključ

Ti dogodki se sprožijo, ko pritisnete določeno tipko ali kombinacijo tipk. Podobno je ustvarjanju svojega na bližnjicah.

Dogodek OnKey je pravzaprav funkcija ali metoda razreda Application, ki ima dva argumenta, kot je prikazano spodaj:

Application.onkey Ključ, ["postopek"]

The ključ je ključ ali kombinacija tipk, ki jih želite uporabiti kot sprožilec.

"Postopek" je izbirni argument, ki je ime niza postopka ali makra, ki ga želite sprožiti. Če postopka ne določite, bo sprožil trenutni postopek.

Kje napisati dogodke Onkey?

No, dogodek Onkey lahko napišete na kateri koli običajni modul. Delovali bodo v običajnih modulih, najprej pa boste morali zagnati tisto podprogram, ki vsebuje navodila za Onkey. Ni tako, kot da ste vsakič zagnali makro za uporabo dogodkov Onkey. Takoj, ko odprete delovni zvezek, boste morali zagnati ta makro.

Če ne želite zagnati makra, ki vsebuje dogodke Onkey, jih lahko vstavite v dogodek workbook_open () v objektu delovnega zvezka. Dogodki Onkey bodo aktivni takoj, ko odprete delovni zvezek, ki vsebuje dogodke Onkey.

Kako napisati upravljalnik dogodkov Onkey?

Torej, če že imate nekaj makrov, ki jih želite zagnati z določeno bližnjico, napišite nov postopek, ki bo vseboval seznam bližnjic. Na primer, tukaj imam makro, ki prikazuje sporočilo, na katerem bližnjica deluje.

Sub show_msg () MsgBox "Bližnjica deluje" End Sub 

Zdaj želim zagnati ta makro, ko pritisnem kombinacijo tipk CTRL+j. V ta namen napišem spodnjo kodo VBA.

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

"^" (carate) je za tipko CTRL. Spodaj je tabela za vse ključne okrajšave v Excelu VBA.

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

Kako aktivirati dogodek Onkey?

Po vnosu zgornje kode v modul, če odprete pogled Excel in uporabite tipko CTRL+J, ne bo delovalo. Najprej morate zagnati podmeni, ki opredeljujejo dogodke OnKey. Zato zaženite enkrat podmeni Activate_Onkey () in potem bo deloval za celotno sejo. Ko zaprete delovni zvezek, ki vsebuje definicije Onkey, bo prenehal delovati.

Definicije Onkey lahko vnesete v postopek, ki ga želite izvesti. Potem boste morali makro enkrat zagnati ročno. Zato predlagam, da dogodke Onkey vključite v dogodke Workbook_Open. Tako se bodo vsi dogodki Onkey samodejno aktivirali.

Dogodek Ontime v Excelu

Kot že ime pove, dogodek Onkey sproži določeno podprogram v najkrajšem možnem času ali po njem. Excel je lahko zaseden pri nekaterih drugih opravilih, na primer pri izvajanju vsote nizov navodil ali v načinu kopiranja v preteklosti. V tem primeru lahko odloži dogodek Ontime. Zato je argument prikazan kot najzgodnejši čas.

Sintaksa dogodka OnTime

Dogodek Ontime je funkcija razreda Application. Ima dva bistvena argumenta in dva izbirna argumenta.

Application.Ontime EarliestTime, "Postopek", [Zadnji čas], [Razpored]

TheNajzgodnejši časje čas, ko želite, da se vaš postopek izvede. Toda Excel bo po določenem najzgodnejšem času zagnal podani makro, šele ko je brezplačen.

The "Postopek" je ime postopka, ki ga želite izvesti ob določenem času.

Kot sem rekel, ni garancije, da bo Excel v določenem času vodil vaš postopek. The Zadnji časje čas po prvem času, da Excelu omogočite, da je brezplačen in izvede vašo nalogo.

Če želite deaktivirati načrtovani dogodek OnTime, ga nastaviteurnik na napačno.

Kje napisati dogodek Ontime?

Dogodek OnTime je mogoče zapisati v kateri koli modul. Za aktiviranje dogodka boste morali izvesti dogodek, ki vsebuje postopek.

Če želite, da se vaš dogodek aktivira takoj, ko odprete delovni zvezek, ki vsebuje dogodek, ga vnesite v dogodek workbook_open. Dogodek bo aktiviral takoj, ko odprete kodo, ki vsebuje dogodek v Excelu.

Kako napisati dogodek Ontime?

Recimo, da imate podprogram, ki prikazuje trenutni datum in uro

Sub show_msg () MsgBox "Trenutni datum in ura je" & Now End Sub

Če želite, da se ta postopek zažene po 5 sekundah drugega zagona makra, boste morali vnesti to kodo.

Sub OnTimeTest () '-nekatera druga opravila Application.ontime Now + (5 /24 /60 /60), "show_msg" End Sub

Ko zaženete podprogram OnTimeTest, bo po petih sekundah njenega zagona sprožil podprogram show_msg. Zato bo dobro, če želite nekaj narediti po nekajkratnem početju drugega, uporabite zgornjo strukturo.

Če želite, da se vaš makro zažene po vsakih nekaj sekundah/minutah/urah/itd., Lahko to funkcijo pokličete sami. To bi bila nekakšna rekurzivna podprogram.

Sub OnTimeTest () MsgBox "Trenutni datum in ura je" & Now Application.ontime Now + (5 /24 /60 /60), "OnTimeTest" End Sub

Zgornja podprogram se zažene po vsakih petih sekundah, ko jo zaženete.

Torej, fantje, to so dogodki v Excelu VBA. Nekatere od zgornjih kategorij imajo različne sprožilce dogodkov. Seveda jih tukaj ne znam razložiti. Tako bo članek dolg do knjige. To je bil le uvod v dogodke, ki so na voljo v Excelu VBA. Za več informacij sledite povezavam, ki so vgrajene v članke. Spodaj sem omenil nekaj sorodnih člankov. Lahko jih tudi preberete.

Če imate kakršne koli dvome v zvezi s tem člankom ali katero koli drugo idejo o excelu/VBA, nas vprašajte v spodnjem razdelku za komentarje.

Dogodki na delovnem listu v Excelu VBA| Dogodek delovnega lista je zelo uporaben, če želite, da se makri izvajajo, ko se na listu pojavi določen dogodek.

Dogodki v delovnem zvezku z uporabo VBA v programu Microsoft Excel | Dogodki v delovnem zvezku delujejo na celotnem delovnem zvezku. Ker so vsi listi del delovnega zvezka, tudi ti dogodki delujejo na njih.

Preprečite samodejno izvajanje/makro dogodkov z uporabo VBA v programu Microsoft Excel | Če želite preprečiti zagon makra auto_open, uporabite tipko shift.

Grafične dogodke grafikona z uporabo VBA v programu Microsoft Excel | Grafikoni so zapleteni predmeti in nanje ste pritrdili več komponent. Za ustvarjanje dogodkov grafikona uporabljamo modul razreda.

Priljubljeni članki:

50 bližnjic v Excelu za večjo produktivnost | Poskrbite, da bo vaša naloga hitrejša. S temi 50 bližnjicami boste še hitreje delali v Excelu.

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.