Įvykiai „Excel VBA“

Turinys:

Anonim

Apskritai įvykiai yra ne kas kita, kaip kažko įvykis. „Excel“ yra tas pats. Tačiau kartais norime, kad įvykus tam tikram įvykiui kažkas vyktų automatiškai. Norėdami ką nors padaryti, kai „Excel“ įvyksta konkretus įvykis, naudojame „Excel VBA“ įvykį.

„Excel VBA“ įvykių tvarkytojai: tipai

„Excel VBA“ daugiausia yra 7 tipų įvykių tvarkytojai.

  1. Taikymo įvykiai
  2. Darbo knygos įvykiai
  3. Užduoties įvykiai
  4. Įvykių diagrama
  5. Vartotojo formos įvykiai
  6. Klavišų derinio įvykiai (sparčiųjų klavišų įvykiai)
  7. Įvykiai laiku

Tyrinėkime juos po vieną.

Programų įvykiai „Excel“

Programos lygio įvykiai suaktyvinami, kai programa („Excel“) yra uždaryta, atidaryta, suaktyvinta, apsaugota, neapsaugota ir pan.

Programos lygiu yra daugiau nei 50 įvykių tipų. Taigi mes negalime čia visų aptarti.

Paraiškos įvykio apimtis:

Šie įvykiai veiks visose „Excel“ darbaknygėse, jei bus atidarytas kodas, kuriame yra darbo knyga. Pvz., Jei sukūrėte programos lygio įvykį, nurodantį aktyvaus lapo lapo pavadinimą, jis bus suaktyvintas kiekvieną kartą suaktyvinus bet kurią darbaknygę.

Kaip sukurti programos įvykių tvarkytoją VBA?

Programos įvykio kūrimas yra šiek tiek sudėtingas. Aš čia išsamiai paaiškinau pavyzdžiu.

„Excel“ darbaknygės įvykiai

Darbo knygos įvykio apimtis

Darbaknygės įvykiai veikia visoje darbaknygėje, kurioje yra kodas. Įvykis gali atidaryti, uždaryti, suaktyvinti, išjungti, pakeisti lapus ir kt.

Kur rašyti „Darbaknygės“ įvykius?

Darbo knygos įvykiai rašomi ant darbaknygės objekto.

Kaip parašyti darbaknygės įvykį?

Atlikite šiuos veiksmus:

1. „Project Explorer“ dukart spustelėkite darbaknygės objektą. Bus rodoma kodo rašymo sritis. Čia parašyti visi įvykiai, apimantys darbaknygę.

2. Viršuje kairėje kodo rašymo srityje pamatysite išskleidžiamąjį meniu. Spustelėkite išskleidžiamąjį meniu ir pasirinkite darbaknygę. Pagal numatytuosius nustatymus jis yra bendras.

3. Kai kairiajame išskleidžiamajame meniu pasirinksite darbaknygę, ji pagal numatytuosius nustatymus įterps įvykio darbaknygės_pavadinimą. Bet jei norite naudoti kitą įvykių paprogramę, pasirinkite ją viršutiniame dešiniajame meniu. Jame bus išvardyti visi galimi darbaknygės įvykiai.

4. Pasirinkite jums reikalingą renginį. Pavyzdžiui, renkuosi įvykį „SheetActivate“. Šis įvykis suaktyvinamas kiekvieną kartą pasirinkus lapą kodo, kuriame yra darbo knyga.

Darbaknygės įvykio pavyzdys:Tai paprastas pavyzdys. Aš tik noriu parodyti suaktyvinto darbalapio pavadinimą. Tam tiesiog naudoju „SheetActivate“ įvykį darbaknygės objekte.

Privatus sub „Workbook_SheetActivate“ („ByVal Sh“ kaip objektas) „MsgBox Sh.Name“ ir „Suaktyvinta“ pabaiga 

Dabar, kai bus suaktyvintas naujas šios darbo knygos lapas, šis įvykis bus suaktyvintas. Jums bus pasiūlyta masažas, suaktyvintas lapo pavadinimas.

Žinau, kad šis kodas nėra toks naudingas, tačiau tarp šių eilučių galite įdėti bet kokį instrukcijų rinkinį. Funkcijas ir paprogrames galite iškviesti iš paties modulio.

Užduoties įvykiai „Excel“

Visi diapazono ir į langelį nukreipti įvykiai įrašomi į darbalapio įvykius. Apie darbalapio įvykius galite paskaityti čia.

Darbo lapo įvykio apimtis

Skaičiuoklės įvykiai yra nukreipti į konkretaus darbalapio diapazonus ir langelius. Skaičiuoklės įvykis bus suaktyvintas dėl įvykių, įvykusių konkrečiame darbalapyje (darbalapyje, kuriame yra kodas).

Kur rašomi darbalapio įvykiai?

Į darbalapio įvykius įrašomi darbalapio įvykiai.

Kaip parašyti darbalapio įvykių tvarkymo kodą?

Tai tas pats, kas darbo knygos įvykiai.

1. „Project Explorer“ dukart spustelėkite darbalapio objektą. Darbo lape bus rodoma kodo rašymo sritis. Visi darbalapio apimties įvykiai yra parašyti šiuose darbalapiuose.

2. Viršuje kairėje kodo rašymo srityje pamatysite išskleidžiamąjį meniu. Spustelėkite išskleidžiamąjį meniu ir pasirinkite darbalapį. Pagal numatytuosius nustatymus jis yra bendras.

3. Kai kairiajame išskleidžiamajame meniu pasirinksite darbalapį, jis pagal numatytuosius nustatymus įterps darbalapio_pasirinkimasKeisti įvykio paprogramę. Bet jei norite naudoti kitą įvykių paprogramę, pasirinkite ją viršutiniame dešiniajame meniu. Jame bus išvardyti visi galimi darbalapio įvykiai.

4. Pasirinkite jums reikalingą renginį. Pavyzdžiui, renkuosi įvykį „Worksheet_SelectionChange“ („ByVal Target As Range“). Šis įvykis suaktyvinamas kiekvieną kartą keičiant lapo diapazoną.

Užduoties įvykio pavyzdys

Privatus antrinis darbalapis_SelectionChange („ByVal Target As Range“) „MsgBox“ „Jūs esate“ ir „Target.Address End Sub“ 

Pirmiau minėtas įvykis yra parašytas darbo knygos 1 lape. Šis įvykis parodys diapazono adresą, kurį pasirinkote lape su kodu, kai pakeisite diapazono pasirinkimą. Žemiau pateikiami dar keli darbalapio įvykių pavyzdžiai.

Skaičiuoklės įvykiai dažniausiai naudojami dinaminiuose prietaisų skydeliuose. Langelius galite naudoti kaip žymimuosius laukelius arba aktyvų pasirinkimą, kad prietaisų skydeliai būtų dinamiški.

Žemiau yra dar keli darbalapio įvykių pavyzdžiai.

Darbo lapo keitimo įvykio naudojimas makrokomandai paleisti, kai atliekami bet kokie pakeitimai

Vykdykite makrokomandą, jei lape bus atlikti pakeitimai nurodytame diapazone

Paprasčiausias VBA kodas, skirtas paryškinti dabartinę eilutę ir stulpelį

Įvykių diagrama

„Excel“ yra dviejų tipų diagramos įvykiai. Vienas iš jų yra paprastai įterptos diagramos, kurias mes čia išsamiai aptarėme. Tai labai panašu į programos lygio renginius.

Kitas yra diagramos lapas. Tai yra specialūs lapai, kuriuose yra tik diagramos, sujungtos su kai kurių kitų lapų duomenimis.

Kalbant apie įvykius, jie panašūs į įprastus lapus.

Kur rašyti diagramų įvykius?

Diagramos įvykiai rašomi diagramos objekte. Tiesiog dukart spustelėkite diagramos lapą, kad atidarytumėte kodo sritį.

Kaip rašyti diagramos įvykius?

Atlikite šiuos veiksmus:

1. „Project Explorer“ dukart spustelėkite diagramos lapo objektą, kad atidarytumėte kodo sritį. Visi konkretūs su diagramos lapu susiję įvykiai yra parašyti čia.

2. Viršutiniame dešiniajame kodo srities kampe matysite įprastą išskleidžiamąjį meniu. Iš to išskleidžiamojo meniu pasirinkite diagramą.

3. Dešiniajame kampe pasirinkite norimą įvykį.

Pavyzdžiui, jei noriu ką nors padaryti, kai tik vartotojas pasirenka diagramą, naudosiu įvykį „Chart_Activate“.

Pavyzdys: diagramos lapo įvykis

Privati ​​antrinė diagrama_Activate () „MsgBox“ diagrama atnaujinta “Pabaiga 

Aukščiau pateiktas kodo elementas bus suaktyvintas, kai tik pasirinksite diagramos lapą. Čia jis tiesiog parodys pranešimą, kad diagrama atnaujinta, bet jūs galite padaryti daug. Prieš rodydami šį pranešimą, galite dinamiškai pasirinkti diagramos duomenų diapazoną.

Žemiau pateikiami dar keli diagramos įvykių pavyzdžiai:

„UserForm“ įvykiai

Vartotojo formos įvykis yra toks pat kaip ir kiti įvykiai. Vartotojo formoje įvyksta keli įvykiai. Šiuos įvykius galite naudoti įvykiams suaktyvinti.

Kur rašyti naudotojo formos įvykius?

Norėdami parašyti vartotojo formos įvykį, pirmiausia turite įterpti „UserForm“.

1. Tada dešiniuoju pelės mygtuku spustelėkite „UserForm“ ir spustelėkite rodinio kodą. Dabar bus atidaryta kodo sritis.

2. Dabar viršutiniame kairiajame laše pasirinkite „Userform“.

3. Kairiajame išskleidžiamajame meniu pasirinkite įvykį, kurį norite naudoti kodo vykdymui suaktyvinti.

4. Įveskite norimą kodą tarp kodo įvykio kodo.

Žemiau pateiktas pavyzdys tiesiog parodo pranešimą, kai suaktyvinama vartotojo forma.

Private Sub UserForm_Activate () MsgBox "Sveiki! Prašome dar kartą patvirtinti savo informaciją." Pabaiga Sub 

Aukščiau pateiktas kodas rodo tik pranešimą, tačiau galite naudoti šį įvykį, kad iš anksto užpildytumėte formą su tam tikrais numatytuoju įėjimu arba užpildytumėte lapo informaciją.

„Onkey“ renginys

Šie įvykiai suaktyvinami paspaudus nurodytą klavišą ar klavišų kombinaciją. Tai panašu į savųjų kūrimą naudojant sparčiuosius klavišus.

„OnKey“ įvykis iš tikrųjų yra „Application“ klasės funkcija arba metodas, turintis du argumentus, kaip parodyta žemiau:

Application.onkey Raktas, ["procedūra"]

The Raktas yra klavišas arba klavišų derinys, kurį norite naudoti kaip aktyviklį.

"Procedūra" yra neprivalomas argumentas, kuris yra norimos suaktyvinti procedūros arba makrokomandos eilutės pavadinimas. Jei nenustatysite procedūros, ji suaktyvins esamą procedūrą.

Kur rašyti „Onkey“ įvykius?

Na, jūs galite parašyti „Onkey“ įvykį bet kuriame įprastame modulyje. Jie veiks įprastuose moduliuose, tačiau pirmiausia turėsite paleisti tą paprogramę, kurioje yra „Onkey“ instrukcijos. Nėra taip, kad kiekvieną kartą paleistumėte makrokomandą, kad galėtumėte naudoti „Onkey“ įvykius. Tik vieną kartą jums reikės paleisti tą makrokomandą, kai atidarysite darbaknygę.

Jei nenorite paleisti makrokomandos, kurioje yra „Onkey“ įvykių, galite įdėti juos į darbaknygės objekto įvykį workbook_open (). „Onkey“ įvykiai bus aktyvūs, kai tik atidarysite darbaknygę, kurioje yra „Onkey“ įvykiai.

Kaip parašyti „Onkey“ įvykių tvarkytoją?

Taigi, jei jau turite makrokomandų, kurias norite paleisti naudodami nurodytą nuorodą, parašykite naują procedūrą, kurioje bus nuorodų sąrašas. Pavyzdžiui, čia yra makrokomanda, rodanti pranešimą, kad nuoroda veikia.

Sub show_msg () MsgBox "Spartusis klavišas veikia" Pabaiga 

Dabar noriu paleisti šią makrokomandą paspausdamas klavišų kombinaciją CTRL+j. Norėdami tai padaryti, aš parašau žemiau esantį VBA kodą.

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

„^“ (karatas) yra skirtas CTRL klavišui. Žemiau yra visų pagrindinių „Excel VBA“ santrumpų lentelė.

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

Kaip suaktyvinti „Onkey“ įvykį?

Parašius aukščiau esantį kodą modulyje, jei išeisite į „Excel“ rodinį ir naudosite klavišą CTRL+J, jis neveiks. Pirmiausia turite paleisti antrinį elementą, kuris apibrėžia „OnKey“ įvykius. Taigi paleiskite vieną kartą „Activate_Onkey“ () antrinę dalį ir tada ji veiks visą sesiją. Uždarius darbaknygę, kurioje yra „Onkey“ apibrėžimai, ji nustos veikti.

„Onkey“ apibrėžimus galite įtraukti į procedūrą, kurią norite įvykdyti. Bet tada turėsite vieną kartą paleisti makrokomandą rankiniu būdu. Todėl siūlau „Onkey“ įvykius įtraukti į „Workbook_Open“ įvykius. Visi „Onkey“ įvykiai bus aktyvuoti automatiškai.

„Ontime“ įvykis „Excel“

Kaip rodo pavadinimas, įvykis „Onkey“ suaktyvina nurodytą paprogramę anksčiau ar vėliau. „Excel“ gali būti užsiėmusi kai kuriomis kitomis užduotimis, pavyzdžiui, vykdydama nurodymų sumų rinkinį arba būdama ankstesnio kopijavimo režimu. Tokiu atveju „Ontime“ įvykis gali būti atidėtas. Štai kodėl argumentas rodomas kaip ankstyviausias laikas.

„OnTime“ įvykio sintaksė

„Ontime“ įvykis yra „Application“ klasės funkcija. Jame yra du esminiai argumentai ir du neprivalomi argumentai.

Application.Ontime EarliestTime, „Procedūra“, [LatestTime], [Tvarkaraštis]

TheAnksčiausias laikasyra laikas, kai norite, kad procedūra būtų vykdoma. Tačiau „Excel“ paleis nurodytą makrokomandą po nustatyto ankstyviausio laiko, tik kai ji bus nemokama.

The "Procedūra" yra procedūros, kurią norite vykdyti nurodytu laiku, pavadinimas.

Kaip sakiau, nėra garantijos, kad „Excel“ atliks jūsų procedūrą nurodytu laiku. The Paskutinis laikasyra laikas po ankstyviausio laiko, kai „Excel“ suteikiamas langas, kad jis būtų laisvas ir galėtų atlikti jūsų užduotį.

Jei norite išjungti suplanuotą „OnTime“ įvykį, nustatykitetvarkaraštį į melagingą.

Kur parašyti „Ontime“ įvykį?

„OnTime“ įvykį galima parašyti bet kuriame modulyje. Turėsite įvykdyti įvykį, kuriame yra procedūra, kad suaktyvintumėte įvykį.

Jei norite, kad įvykis būtų suaktyvintas iškart atidarius darbaknygę, kurioje yra įvykis, įdėkite jį į įvykį workbook_open. Jis suaktyvins įvykį, kai tik „Excel“ atidarysite kodą, kuriame yra įvykis.

Kaip parašyti „Ontime“ įvykį?

Tarkime, kad turite paprogramę, rodančią dabartinę datą ir laiką

Sub show_msg () MsgBox "Dabartinė data ir laikas yra" & Dabar pabaigos sub

Dabar, jei norite, kad ši procedūra būtų vykdoma po 5 sekundžių kito makrokomandos paleidimo, turėsite įdėti šį kodą.

Sub OnTimeTest () '-kai kurios kitos užduotys Application.ontime Now + (5/24 / 60 /60), "show_msg" End Sub

Paleidus „OnTimeTest“ paprogramę, po penkių sekundžių paleidimo ji suaktyvins „show_msg“ paprogramę. Taigi bus gerai, jei norite ką nors padaryti po kelių kartų, kai darote ką nors kita, naudokite aukščiau pateiktą struktūrą.

Jei norite, kad jūsų makrokomanda veiktų kas kelias sekundes/minutes/valandas/ir tt, galite paskambinti pačiai funkcijai. Tai būtų savotiška rekursinė paprograma.

Sub OnTimeTest () MsgBox "Dabartinė data ir laikas yra" & Now Application.ontime Now + (5/24 / 60 /60), "OnTimeTest" pabaiga

Pirmiau minėta paprogramė bus paleista kas penkias sekundes, kai ją pradėsite.

Taigi taip, vaikinai, tai yra įvykiai „Excel VBA“. Kai kurios iš aukščiau išvardytų kategorijų turi daugybę įvykių. Žinoma, negaliu čia visų paaiškinti. Tai sudarys ilgą knygos straipsnį. Tai buvo tik įžanga į įvykius, pasiekiamus „Excel VBA“. Norėdami gauti daugiau informacijos, sekite straipsniuose esančias nuorodas. Žemiau paminėjau keletą susijusių straipsnių. Jūs taip pat galite juos perskaityti.

Jei turite kokių nors abejonių, susijusių su šiuo straipsniu ar kita „Excel“/VBA mintimi, paklauskite mūsų komentarų skiltyje žemiau.

Užduoties įvykiai „Excel VBA“| Skaičiuoklės įvykis yra tikrai naudingas, kai norite, kad jūsų makrokomandos būtų paleistos, kai lape įvyksta nurodytas įvykis.

Darbaknygės įvykiai naudojant VBA „Microsoft Excel“ | Darbo knygos įvykiai veikia su visa darbo knyga. Kadangi visi lapai yra darbo knygos dalis, šie įvykiai taip pat tinka jiems.

Neleiskite automato/eventmacro vykdyti naudojant „Microsoft Excel“ VBA | Norėdami užkirsti kelią automatinio atidarymo makrokomandai, naudokite klavišą „Shift“.

Diagramuokite objekto įvykius naudodami VBA programoje „Microsoft Excel“ | Diagramos yra sudėtingi objektai, prie kurių pridedate kelis komponentus. Norėdami sudaryti diagramos įvykius, naudojame klasės modulį.

Populiarūs straipsniai:

50 „Excel“ nuorodų, skirtų produktyvumui padidinti | Greičiau atlikite savo užduotį. Šie 50 sparčiųjų klavišų leis dar greičiau dirbti naudojant „Excel“.

„VLOOKUP“ funkcija „Excel“ | Tai yra viena iš dažniausiai naudojamų ir populiariausių „Excel“ funkcijų, naudojama norint ieškoti vertės iš įvairių diapazonų ir lapų.

COUNTIF „Excel 2016“ | Naudodami šią nuostabią funkciją, suskaičiuokite reikšmes su sąlygomis. Norint skaičiuoti konkrečią vertę, nereikia filtruoti duomenų. Skaitiklio funkcija yra būtina norint paruošti prietaisų skydelį.

Kaip naudoti „SUMIF“ funkciją „Excel“ | Tai dar viena esminė prietaisų skydelio funkcija. Tai padeda apibendrinti vertes konkrečiomis sąlygomis.