Üldiselt pole sündmused midagi muud kui millegi toimumine. Excelis on see sama. Kuid mõnikord tahame, et mingi sündmuse toimumisel juhtuks midagi automaatselt. Selleks, et midagi ette võtta, kui Excelis konkreetne sündmus juhtub, kasutame Exceli VBA sündmust.
Exceli VBA sündmuste käitlejad: tüübid
Excel VBA -s on peamiselt 7 tüüpi sündmuste käitlejaid.
- Rakendussündmused
- Töövihikuüritused
- Töölehe sündmused
- Diagrammi sündmused
- Kasutajavormi sündmused
- Klahvikombinatsiooni sündmused (kiirklahvide sündmused)
- Õigeaegsed sündmused
Uurime neid ükshaaval.
Rakenduse sündmused Excelis
Rakendustaseme sündmused käivitatakse, kui rakendus (Excel) on suletud, avatud, aktiveeritud, kaitstud, kaitsmata jne.
Rakendustasandil on rohkem kui 50 tüüpi sündmusi. Nii et me ei saa neid kõiki siin arutada.
Rakendussündmuse ulatus:
Need sündmused töötavad kõigi Exceli töövihikute puhul, kui töövihikut sisaldav kood on avatud. Näiteks kui olete loonud rakendustaseme sündmuse, mis ütleb teile aktiivse lehe lehe nime, käivitatakse see iga töövihiku iga lehe aktiveerimise korral.
Kuidas luua rakendusesündmuste käitleja VBA -s?
Rakenduse sündmuse loomine on natuke keeruline. Ma selgitasin seda siin üksikasjalikult näitega.
Töövihiku sündmused Excelis
Töövihiku sündmuse ulatus
Töövihiku sündmused töötavad kogu koodi sisaldava töövihiku kallal. Sündmus võib töövihikut avada, sulgeda, aktiveerida, deaktiveerida, muuta lehti jne.
Kuhu töövihiku sündmusi kirjutada?
Töövihiku sündmused on kirjutatud töövihiku objektile.
Kuidas kirjutada töövihiku sündmust?
Järgige neid samme.
1. Projektiuurijas topeltklõpsake töövihiku objekti. Kuvatakse koodi kirjutamise ala. Kõik töövihiku ulatusega sündmused on kirjutatud siia.
2. Koodi kirjutamise ala vasakus ülanurgas näete rippmenüüd. Klõpsake rippmenüüd ja valige töövihik. Vaikimisi on see üldine.
3. Kui valite töövihiku vasakpoolsest rippmenüüst, lisab see vaikimisi sündmuse alamprogrammi töövihiku avamine. Aga kui soovite kasutada erinevat sündmuste alamprogrammi, valige see paremas ülanurgas. See loetleb kõik saadaolevad töövihiku sündmused.
4. Valige vajalik sündmus. Näite huvides valin sündmuse SheetActivate. See sündmus käivitatakse iga lehe valiku korral, mis sisaldab töövihikut.
Töövihiku sündmuse näide:See on lihtne näide. Ma tahan lihtsalt näidata töölehe nime, mis on aktiveeritud. Selleks kasutan lihtsalt töövihiku objektis SheetActivate sündmust.
Private Sub Workbook_SheetActivate (ByVal Sh kui objekt) MsgBox Sh.Name & "Activated" End Sub
Nüüd, kui selle töövihiku uus leht aktiveeritakse, käivitatakse see sündmus. Teilt küsitakse massaaži, lehe nimi on aktiveeritud.
Ma tean, et see kood pole nii kasulik, kuid nende ridade vahele saate panna mis tahes juhiseid. Funktsioone ja alamprogramme saate helistada moodulite enda kaudu.
Töölehe sündmused Excelis
Kõik vahemiku ja lahtri sihtimisega sündmused on kirjutatud töölehe sündmustesse. Töölehe sündmuste kohta saate lugeda siit.
Töölehe sündmuse ulatus
Töölehe sündmused on suunatud konkreetse töölehe vahemikele ja lahtritele. Töölehe sündmus käivitatakse sündmustel, mis toimuvad konkreetsel töölehel (tööleht, mis sisaldab koodi).
Kus töölehe sündmused on kirjutatud?
Töölehe sündmused kirjutatakse töölehe objektile.
Kuidas kirjutada töölehe sündmuste käitlemise koodi?
See on sama, mis töövihiku üritused.
1. Projektiuurijas topeltklõpsake töölehe objekti. Töölehe jaoks kuvatakse koodi kirjutamise ala. Kõik töölehtede ulatusega sündmused on kirjutatud nendele töölehtedele.
2. Koodi kirjutamise ala vasakus ülanurgas näete rippmenüüd. Klõpsake rippmenüüd ja valige tööleht. Vaikimisi on see üldine.
3. Kui valite töölehe vasakpoolsest rippmenüüst, lisab see vaikimisi alamprogrammi worksheet_selectionChange event. Aga kui soovite kasutada erinevat sündmuste alamprogrammi, valige see paremas ülanurgas. See loetleb kõik saadaolevad töölehe sündmused.
4. Valige vajalik sündmus. Näite huvides valin sündmuse Worksheet_SelectionChange (ByVal Target As Range). See sündmus käivitub iga vahemiku valiku muutmisel lehel.
Töölehe sündmuse näide
Privaatne alamtööleht_SelectionChange (ByVal Target as Range) MsgBox "You are in" & Target.Address End Sub
Ülaltoodud sündmus on kirjutatud töövihiku lehele1. See sündmus näitab vahemiku aadressi, mille olete valinud koodi sisaldaval lehel, kui muudate vahemiku valikut. Allpool on veel mõned näited töölehe sündmustest.
Töölehe sündmusi kasutatakse enamasti dünaamilistes armatuurlaudades. Armatuurlaudade dünaamiliseks muutmiseks saate lahtreid kasutada märkeruutude või aktiivsete valikutena.
Allpool on veel mõned näited töölehe sündmustest.
Töölehe muutmise sündmuse kasutamine makro käivitamiseks muudatuste tegemisel
Käivitage makro, kui lehel tehakse kindlaksmääratud vahemikus muudatusi
Lihtsaim VBA kood praeguse rea ja veeru esiletõstmiseks
Diagrammi sündmused
Excelis on kahte tüüpi diagrammisündmusi. Üks neist on tavaliselt manustatud diagrammid, mida oleme siin üksikasjalikult arutanud. See sarnaneb rakendustasandi sündmustega.
Teine on diagrammileht. Need on spetsiaalsed lehed, mis sisaldavad ainult mõne teise lehe andmetega ühendatud diagramme.
Mis puutub sündmustesse, siis on need sarnased tavaliste linadega.
Kuhu diagramme kirjutada?
Diagrammi sündmused kirjutatakse diagrammi objekti. Koodiala avamiseks topeltklõpsake diagrammilehte.
Kuidas diagrammi sündmusi kirjutada?
Järgige neid samme.
1. Projektiuurijas topeltklõpsake diagrammilehe objekti, et avada koodiala. Kõik konkreetsed kaardilehega seotud sündmused on siin kirjutatud.
2. Koodiala paremas ülanurgas näete tavalist rippmenüüd. Valige rippmenüüst diagramm.
3. Valige paremas nurgas soovitud sündmus.
Näiteks kui tahan midagi teha kohe, kui kasutaja diagrammi valib, kasutan sündmust Chart_Activate.
Näide: diagrammilehe sündmus
Privaatne alamdiagramm_Activate () MsgBox "Diagrammi värskendatakse" End Sub
Ülaltoodud kooditükk käivitub kohe, kui valite diagrammilehe. Siin kuvatakse lihtsalt sõnum, et diagrammi värskendatakse, kuid saate palju ära teha. Nagu te saate enne selle teate kuvamist diagrammi andmevahemiku dünaamiliselt valida.
Allpool on veel mõned näited diagrammi sündmustest:
UserFormi sündmused
Kasutajavormi sündmus on täpselt nagu teised sündmused. Kasutajavormil esineb mitmeid sündmusi. Saate neid sündmusi sündmuste käivitamiseks kasutada.
Kuhu kasutajavormi sündmused kirjutada?
Kasutajavormi sündmuse kirjutamiseks peate esmalt sisestama UserFormi.
1. Seejärel paremklõpsake UserFormi ja klõpsake vaate koodi. Nüüd avaneb koodiala.
2. Nüüd valige vasakus ülanurgas Userform.
3. Valige vasakpoolsest rippmenüüst sündmus, mida soovite kasutada koodi käivitamiseks.
4. Kirjutage soovitud kood koodisündmuse koodi vahele.
Allolev näide näitab lihtsalt sõnumit, kui kasutajavorm on aktiveeritud.
Privaatne alamkasutajaForm_Activate () MsgBox "Tere, palun kontrollige oma andmeid veel kord." End Sub
Ülaltoodud kood näitab lihtsalt sõnumit, kuid saate seda sündmust kasutada vormi eeltäitmiseks mõne vaikesisendiga või kasutada lehe täitmiseks selle teavet.
Sündmus Onkey
Need sündmused käivitatakse, kui vajutatakse määratud klahvi või klahvikombinatsiooni. See sarnaneb oma otseteede loomisega.
Sündmus OnKey on tegelikult rakendusklassi funktsioon või meetod, millel on kaks järgmist argumenti:
Application.onkey Võti, ["protseduur"]
The võti on klahv või klahvikombinatsioon, mida soovite käivitajana kasutada.
"Protseduur" on valikuline argument, mis on käivitatava protseduuri või makro stringinimi. Kui te protseduuri ei määratle, käivitab see praeguse protseduuri.
Kuhu kirjutada Onkey üritused?
Noh, saate kirjutada sündmuse Onkey mis tahes tavalisele moodulile. Need töötavad tavalistes moodulites, kuid kõigepealt peate käivitama selle alamprogrammi, mis sisaldab Onkey juhiseid. Ei ole nii, et olete käivitanud makro iga kord, kui kasutate Onkey sündmusi. Töövihiku avamisel läheb makro käivitamiseks vaja ainult üks kord.
Kui te ei soovi käivitada Onkey sündmusi sisaldavat makro, saate need sisestada töövihikuobjekti sündmusesse workbook_open (). See muudab Onkey sündmused aktiivseks kohe, kui avate Onkey sündmusi sisaldava töövihiku.
Kuidas Onkey -sündmuste käitlejat kirjutada?
Niisiis, kui teil on juba teatud makroid, mida soovite konkreetse otseteega käivitada, kirjutage uus protseduur, mis sisaldab otseteede loendit. Näiteks siin on mul makro, mis näitab sõnumit, et otsetee töötab.
Sub show_msg () MsgBox "Otsetee töötab" End Sub
Nüüd tahan seda makro käivitada, kui vajutan klahvikombinatsiooni CTRL+j. Selleks kirjutan allpool oleva VBA koodi.
Alam Activate_Onkey () Application.OnKey "^j", "show_msg" Lõpeta alam
"^" (carate) on mõeldud CTRL-klahvi jaoks. Allpool on tabel kõigi Excel VBA peamiste lühendite kohta.
https://docs.microsoft.com/en-us/office/vba/api/excel.application.onkey
Kuidas Onkey sündmust aktiveerida?
Pärast ülaltoodud koodi kirjutamist moodulisse, kui te lähete Exceli vaatele ja kasutate klahvi CTRL+J, see ei tööta. Esiteks peate käivitama alamjaotise, mis määratleb OnKey sündmused. Nii et käivitage üks kord alam Activate_Onkey () ja siis töötab see kogu seansi vältel. Kui sulgete Onkey definitsioone sisaldava töövihiku, lakkab see töötamast.
Saate sisestada Onkey määratlused protseduuri, mida soovite juhtida. Kuid siis peate makro üks kord käsitsi käivitama. Seetõttu soovitan Onkey sündmused lisada töövihiku_Avatud sündmustesse. See aktiveerib kõik Onkey sündmused automaatselt.
Ontime'i sündmus Excelis
Nagu nimigi ütleb, käivitab sündmus Onkey määratud alamprogrammi esimesel võimalusel määratud ajal või pärast seda. Excel võib olla hõivatud mõne muu ülesandega, näiteks juhiste summa täitmisega või möödunud režiimis kopeerimisega. Sellisel juhul võib see Ontime sündmuse edasi lükata. Sellepärast näidatakse argument kõige varasemana.
OnTime'i sündmuse süntaks
Ontime sündmus on rakendusklassi funktsioon. Sellel on kaks olulist argumenti ja kaks valikulist argumenti.
Application.Ontime EarliestTime, "Menetlus", [LatestTime], [Ajakava]
TheVaraseim aegon aeg, mil soovite oma protseduuri käivitada. Kuid Excel käivitab määratud makro pärast määratud kõige varasemat aega, alles siis, kui see on tasuta.
The "Protseduur" on selle protseduuri nimi, mida soovite määratud ajal käivitada.
Nagu ma ütlesin, pole garantiid, et Excel käivitab teie protseduuri määratud ajal. The LastestTimeon aeg pärast kõige varasemat aega, et anda Excelile aken vabaks olemiseks ja teie ülesande täitmiseks.
Kui soovite oma ajastatud OnTime'i sündmuse desaktiveerida, siis määrakeajakava valeks.
Kuhu kirjutada Ontime Event?
Sündmuse OnTime saab kirjutada mis tahes moodulis. Sündmuse aktiveerimiseks peate toimingu sooritama.
Kui soovite, et teie sündmus aktiveeruks kohe, kui avate sündmust sisaldava töövihiku, pange see sündmusesse workbook_open. See aktiveerib sündmuse kohe, kui avate sündmust sisaldava koodi Excelis.
Kuidas kirjutada Ontime Event?
Oletame, et teil on alamprogramm, mis näitab praegust kuupäeva ja kellaaega
Sub show_msg () MsgBox "Praegune kuupäev ja kellaaeg on" & Now End Sub
Kui soovite, et see protseduur toimiks pärast 5 sekundit teise makro käivitamist, peate selle koodi sisestama.
Sub OnTimeTest () '-mõned muud ülesanded Application.ontime Now + (5/24 / 60 /60), "show_msg" End Sub
Kui käivitate alamprogrammi OnTimeTest, käivitab see viie sekundi pärast käivitamist alamprogrammi show_msg. Seega on hea, kui soovite pärast mõne muu toimingu tegemist midagi teha, kasutage ülaltoodud struktuuri.
Kui soovite, et teie makro töötaks iga paari sekundi/minuti/tunni/jne järel, saate selle funktsiooni ise helistada. See oleks omamoodi rekursiivne alamprogramm.
Sub OnTimeTest () MsgBox "Praegune kuupäev ja kellaaeg on" & Now Application.ontime Now + (5/24/60/60), "OnTimeTest" Lõpu alam
Ülaltoodud alamprogramm käivitub iga viie sekundi järel pärast selle käivitamist.
Nii et jah, poisid, need on sündmused Excelis VBA. Mõnel ülaltoodud kategoorial on mitmesuguseid sündmuste käivitajaid. Muidugi ei oska ma neid kõiki siin selgitada. Sellest saab raamatu pikk artikkel. See oli lihtsalt sissejuhatus Exceli VBA -s saadaolevatesse sündmustesse. Lisateabe saamiseks järgige artiklites manustatud linke. Olen allpool maininud mõningaid seotud artikleid. Saate neid ka lugeda.
Kui teil on selle artikli või mõne muu Exceli/VBA mõttega seoses kahtlusi, küsige seda allpool kommentaaride osas.
Töölehe sündmused Excel VBA -s| Töölehe sündmus on tõesti kasulik, kui soovite oma makrosid käivitada, kui lehel toimub teatud sündmus.
Töövihikuüritused, kasutades Microsoft Excelis VBA -d | Töövihikuüritused töötavad kogu töövihiku kallal. Kuna kõik lehed on osa töövihikust, töötavad need sündmused ka nende kallal.
Vältige automacro/eventmacro käivitamist Microsoft Excelis VBA abil | Auto_open makro käivitamise vältimiseks kasutage tõstuklahvi.
Diagrammige objekti sündmused Microsoft Excelis VBA abil | Diagrammid on keerulised objektid ja neile on lisatud mitu komponenti. Diagrammi sündmuste tegemiseks kasutame klassi moodulit.
Populaarsed artiklid:
50 Exceli otseteed tootlikkuse suurendamiseks | Saa oma ülesandega kiiremini hakkama. Need 50 otseteed aitavad teil Excelis veelgi kiiremini töötada.
Funktsioon VLOOKUP Excelis | See on üks enim kasutatud ja populaarsemaid Exceli funktsioone, mida kasutatakse erinevate vahemike ja lehtede väärtuse otsimiseks.
COUNTIF Excelis 2016 | Loendage väärtused tingimustega, kasutades seda hämmastavat funktsiooni. Te ei pea konkreetse väärtuse loendamiseks oma andmeid filtreerima. Countif funktsioon on armatuurlaua ettevalmistamisel hädavajalik.
Funktsiooni SUMIF kasutamine Excelis | See on veel üks armatuurlaua oluline funktsioon. See aitab teil teatud tingimustel väärtusi kokku võtta.