Võib -olla soovite käivitada oma makro/VBA -katkendi, kui on valitud konkreetne töövihik, valitud on töövihiku leht, lahter muudab väärtust, topeltklõpsu korral, lehe lisamisel jne. Kõigil neil juhtudel kasutame Töövihiku sündmuste käitleja. Sündmuste käitleja aitab meil käivitada VBA koodi alati, kui teatud sündmus aset leiab.
Selles artiklis õpime lühidalt iga töövihiku sündmuste käitleja kohta.
Mis on töövihiku sündmuste käitleja?
Töövihiku sündmuste käitleja on alamprogramm, mis on töövihiku jaoks kohalik. Need koodid töötavad ainult töövihiku komponentide puhul. See on töövihik ise, see on lehed ja vahemikud.
Kuhu kirjutada töövihiku sündmuste käitleja kood?
Töövihiku sündmused on kirjutatud ainult töövihiku objekti. Kui kirjutate töövihiku sündmuse mõnes tavalises moodulis, siis viga ei teki, kuid need lihtsalt ei tööta.
Töövihiku objekti kirjutamiseks. Topeltklõpsake seda või paremklõpsake ja klõpsake vaate koodi. Kuvatakse koodi kirjutamise ala.
Kuidas kirjutada töövihikusse konkreetse sündmuse koodi?
Nüüd, kui olete redigeerimisrežiimis, näete vasakus ülanurgas rippmenüüs üldist. Klõpsake rippmenüüd ja valige töövihik. Parema ülanurga rippmenüüs kuvatakse kõik sündmused. Valige, mida vajate, ja selle sündmuse skeleti kood kirjutatakse teile.
Igal sündmusel on fikseeritud protseduuri nimi. Need on reserveeritud alamprogrammi nimed, mis algavad töövihikuga_. Te ei saa neid kasutada teiste alamprogrammide jaoks
(saate, aga need on tavalised alamprogrammid).
Tähtis: Iga selle loendi alamprogramm töötab määratud sündmusel.
Ühte tüüpi töövihiku sündmuste protseduuri saab ühele töövihikule kirjutada ainult üks kord. Kui kirjutate ühte töövihikusse kaks sama sündmuste käsitlemise protseduuri, põhjustab see tõrke ja ühtegi neist ei täideta. Loomulikult on viga mitmetähenduslikud alamprogrammid.
Õpime lühidalt iga sündmuse kohta.
1. The Workbook_SheetChange (ByVal Sh kui objekt, ByVal Target kui vahemik) Sündmus
See sündmus käivitub, kui muudame töölehtede sisaldust (vormindamine on välistatud). Kui soovite midagi teha, kui lehel tehakse muudatusi, on kood järgmine:
Private Sub Workbook_SheetChange (ByVal Sh kui objekt, ByVal Target As Range) 'tee midagi Msgbox "tegi midagi" End Sub
"Sh" on alati aktiivne leht. "Sihtmärk" on alati aktiivne lahter.
Veel üks näide: Kui A1 muutub, võiksite kuupäeva ja kellaaja sisestada Cel, prl B1. Sellisel juhul kasutame sündmust workbook_sheetchange. Kood näeks välja selline:
Privaatne alamtöövihiku_lehe muutmine (ByVal Sh objektina, ByVal sihtmärk vahemikuna) kui Target.Address = "$ A $ 1" Siis vahemik ("B1"). Value2 = Formaat (nüüd (), "hh: mm: ss") Lõpp Kui End Sub
See sihib igal lehel ainult lahtrit A1, kuna me pole "sh" objekti määranud.
2. The Workbook_Activate () Sündmus
See sündmus käivitatakse, kui aktiveeritakse töövihikut sisaldav sündmuse kood. Selle sündmuse skeleti kood on järgmine:
Private Sub Workbook_Activate () Lõpu alamosa
Lihtne näide on töövihiku nime näitamine selle valimisel.
Private Sub Workbook_Activate () MsgBox "Olete töövihikus" ja aktiivne töövihik.Nimi Lõpu alam
Niipea, kui jõuate seda koodi sisaldava töövihiku juurde, käivitatakse sündmus ja teile kuvatakse teade „Olete töövihiku nimel” (leht 2 on minu puhul).
3. The Töövihik_Avatud () Sündmus
See on üks enim küsitud küsimus, kuidas makro käivitada kohe, kui töövihik avaneb. See on vastus. See töövihiku sündmus käivitatakse kohe pärast töövihiku avamist. Erinevalt Workbook_Activate () töötab see kood ainult üks kord, mitte iga kord, kui see aktiveeritakse.
Private Sub Workbook_Open () 'oma kood' End Sub
Allolev näide Workbook_Open sündmus kuvab töövihikut sisaldava koodi avamisel lihtsalt tervitusteate.
Private Sub Workbook_Open () MsgBox "Tere tulemast põhifaili" lõpp -alam
4. The Workbook_Deactivate () Sündmus
See sündmus käivitub, kui lahkute töövihikut sisaldavast koodist. Teisisõnu, kui soovite töövihiku vahetamisel midagi teha, näiteks lehti peita või midagi muud, kasutage seda VBA sündmust. Süntaks on järgmine:
Private Sub Workbook_Deactivate () 'oma kood' End Sub
Allolev näide Workbook_Deativate sündmus avab sellelt lehelt lahkumisel lihtsalt teate, et olete põhilehelt lahkunud.
Privaatne alamtöövihik_Deaktiveeri () MsgBox "Sa lahkusid põhilehest" Lõpu alam
5. The Workbook_BeforeClose () Sündmus
See sündmus käivitub, kui kinnitate VBA sündmust sisaldava lehe kustutamist. Süntaks on lihtne:
Privaatne alamtöövihik_BeforeClose (Tühista kui Boolean) Lõpu alamosa
Tühista saab seada väärtusele Tõene, kui soovite töövihikut lahti hoida.
Allolev kood küsib teilt, kas soovite sulgemisjärgse töövihiku sisu salvestada.
Private Sub Workbook_BeforeClose (Cancel as Boolean) ans = MsgBox ("Kas soovite selle töövihiku sisu salvestada?", VbYesNo) If ans = True Siis thisworkbook.save End if End Sub
6. The Workbook_BeforeSave (ByVal SaveAsUI kui Boolean, Cancel as Boolean) Sündmus
See sündmus käivitub enne töövihiku salvestamist. Süntaks on lihtne:
Privaatne alamtöövihik_BeforeSave (ByVal SaveAsUI kui Boolean, Cancel as Boolean) End Sub
SaveAsUI väärtuseks on määratud Tõene, kui töövihikus on muudatusi (mitte VBA -s).
Tühista saab seada väärtusele Tõene, kui soovite töövihiku salvestamata jätta.
Allolev kood küsib teilt, kas soovite salvestatava töövihiku sisu salvestada.
Private Sub Workbook_BeforeSave (ByVal SaveAsUI as Boolean, Cancel as Boolean) ans = MsgBox ("Kas soovite tõesti selle töövihiku sisu salvestada?", VbYesNo) If ans = False then Cancel = True End If End Sub
7. The Workbook_BeforeSave (ByVal SaveAsUI kui Boolean, Cancel as Boolean) Sündmus
See sündmus käivitub enne töövihiku salvestamist. Süntaks on lihtne:
Privaatne alamtöövihik_BeforeSave (ByVal SaveAsUI kui Boolean, Cancel as Boolean) End Sub
SaveAsUI väärtuseks on määratud Tõene, kui töövihikus on muudatusi (mitte VBA -s).
Tühista saab seada väärtusele Tõene, kui soovite töövihiku salvestamata jätta.
Allolev kood küsib teilt, kas soovite salvestatava töövihiku sisu salvestada.
Private Sub Workbook_BeforeSave (ByVal SaveAsUI as Boolean, Cancel as Boolean) ans = MsgBox ("Kas soovite tõesti selle töövihiku sisu salvestada?", VbYesNo) If ans = False then Cancel = True End If End Sub
8. The Workbook_NewSheet (ByVal Sh kui objekt) Sündmus
See sündmus käivitub, kui lisate töövihikusse uue lehe. Süntaks on lihtne:
Privaatne alamtöövihiku_uusileht (ByVal Sh kui objekt) Lõpualam
Sh on lehe objekt. Tüüp on tegelikult põhiobjekt, nii et kui lisame diagrammilehe, makrolehe või dialoogilehe, siis sündmus ikkagi toimib.
Allolev kood lisab ja näitab äsja lisatud lehe nime.
Private Sub Workbook_NewSheet (ByVal Sh as Object) MsgBox "Lisasite uue lehe." & Sh.Name End Sub
Töövihiku objekti sündmusi on palju rohkem. Me ei saa neid kõiki siin arutada. Kui soovite mõne konkreetse sündmuse kohta teada saada, küsige allpool kommentaaride jaotises. Loodan, et suutsin selles artiklis selgitada töövihiku sündmuste põhitõdesid. Andke mulle teada, kas see aitas teid allpool olevas kommentaaride jaotises.
Seotud artiklid:
Töölehe muutmise sündmuse kasutamine makro käivitamiseks muudatuste tegemisel | Nii et makro käivitamiseks iga kord, kui lehte värskendatakse, kasutame VBA töölehe sündmusi.
Käivitage makro, kui lehel tehakse kindlaksmääratud vahemikus muudatusi | Makrokoodi käitamiseks, kui määratud vahemiku väärtus muutub, kasutage seda VBA -koodi. See tuvastab kõik määratud vahemikus tehtud muudatused ja käivitab sündmuse.
Lihtsaim VBA kood praeguse rea ja veeru esiletõstmiseks | Kasutage seda väikest VBA -katkendit lehe praeguse rea ja veeru esiletõstmiseks.
Populaarsed artiklid:
50 Exceli otseteed tootlikkuse suurendamiseks | Saa oma ülesandega kiiremini hakkama. Need 50 otseteed muudavad teie töö Excelis veelgi kiiremaks.
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.