Töölehe sündmused Excel VBA -s

Lang L: none (table-of-contents):

Anonim

Võib -olla soovite käivitada oma makro/VBA katkendi, kui lahter muudab oma väärtust, topeltklõps, leht on valitud jne. Kõigil neil juhtudel kasutame töölehe sündmuste käitlejat. Sündmuste käitleja aitab meil käivitada VBA koodi alati, kui teatud sündmus aset leiab.

Selles artiklis õpime lühidalt iga töölehe sündmuste käitleja kohta.

Mis on töölehtede sündmuste käitleja?

Töölehe sündmuste käitleja on alamprogramm, mis on töölehe mooduli jaoks kohalik.

Kuhu kirjutada töölehe sündmuste käitleja kood?

Tööleht Sündmused on kirjutatud ainult lehtede objektidena. Kui kirjutate töölehe sündmuse mõnes moodulis või klassimoodulis, siis viga ei teki, kuid need lihtsalt ei tööta.

Leheobjekti kirjutamiseks. Topeltklõpsake seda või paremklõpsake ja klõpsake vaate koodi. Kuvatakse koodi kirjutamise ala.

Kuidas töölehele konkreetse sündmuse jaoks koodi kirjutada?

Nüüd, kui olete redigeerimisrežiimis, näete vasakus ülanurgas rippmenüüs üldist. Klõpsake rippmenüüd ja valige tööleht. Nüüd kuvatakse paremas ülanurgas rippmenüüs 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. Te ei saa neid kasutada lehe muude alamprogrammide jaoks. Moodulis töötavad nad tavalise alamprogrammina.

Tähtis: Iga selle loendi alamprogramm töötab määratud sündmusel.
Ühte tüüpi töölehe sündmuste protseduuri saab ühele lehele kirjutada ainult üks kord. Kui kirjutate ühele lehele 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. TheWorksheet_Change (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 kogu lehel tehakse muudatusi, on kood järgmine:

Privaatne alamlehe muutmine (ByVal Target as Range) 'do somehting Msgbox "done some" End Sub 

"Sihtmärk" on alati aktiivne lahter.

Teine näide: kui A1 muutub, võiksite lahtrisse B1 lisada kuupäeva ja kellaaja. Sellisel juhul kasutame sündmust worksheet_change. Kood näeks välja selline:

Privaatne alamlehe muutmine (ByVal Target as Range) Kui Sihtmärk.Aadress = "$ A $ 1" Siis vahemik ("B1"). Väärtus2 = Vorming (nüüd (), "hh: mm: ss") Lõpp kui lõpp Alam 

See sihib ainult lahtrit A1.

Kui soovite sihtida vahemikku, kasutage järgmist näidet.

Käivitage makro, kui lehel tehakse kindlaksmääratud vahemikus muudatusi

2. TheWorksheet_SelectionChange (ByVal Target as Range)Sündmus

Nagu nimigi ütleb, käivitub see sündmus valiku muutumisel. Teisisõnu, kui teie kursor on lahtris A1 ja see liigub mõnda teise lahtrisse, käivitatakse selle alamprogrammi kood.

Allolev kood muudab aktiivsete lahtrite värvi, kui see muutub ja kui see on paaris rida.

Privaatne alamleht_SelectionChange (ByVal Target as Range) Kui sihtmärk. Rida Mod 2 = 0 Siis Target.Interior.ColorIndex = 22 End If End Sub 

Nüüd, kui mu kursor liigub ühtlasel real, muutub see värviliseks. Paaritu rea lahtreid säästetakse.

Veel üks näide sündmusest Worksheet_SelectionChange:

Lihtsaim VBA kood praeguse rea ja veeru esiletõstmiseks

3. The Tööleht_Aktiveeri () Sündmus

See sündmus käivitatakse, kui töölehte sisaldav sündmuse kood aktiveerub. Selle sündmuse skeleti kood on järgmine:

Privaatne alamleht_Aktiveeri () Lõpp -alam 

Lihtne näide on lehe nime näitamine selle valimisel.

Privaatne alamtööleht_Activate () MsgBox "Olete sees" ja ActiveSheet.Name Lõpu alam 

Niipea kui jõuate lehele, mis sisaldab seda koodi, üritus käivitatakse ja teile kuvatakse teade "You are on sheet name" (leht 2 on minu puhul).

4. The Tööleht_Deaktiveeri () Sündmus

See sündmus käivitub koodi sisaldava lehe lahkumisel. Teisisõnu, kui soovite lehelt lahkudes midagi teha, näiteks ridade peitmist või midagi muud, kasutage seda VBA sündmust. Süntaks on järgmine:

Privaatne alamleht_Deaktiveeri () 'oma kood' Lõpu alam 

Allolev näide Worksheet_Deativate sündmus avab sellelt lehelt lahkumisel lihtsalt teate, et olete põhilehelt lahkunud.

Privaatne alamleht_Deaktiveeri () MsgBox "Sa lahkusid põhilehest" Lõpualam 

5. The Worksheet_BeforeDelete ()Sündmus

See sündmus käivitub, kui kinnitate VBA sündmust sisaldava lehe kustutamist. Süntaks on lihtne:

Privaatne alamleht_BeforeDelete () Lõpu alam 

Allolev kood küsib teilt, kas soovite kustutatava lehe sisu kopeerida.

Privaatne alamleht_BeforeDelete () ans = MsgBox ("Kas soovite selle lehe sisu uuele lehele kopeerida?", VbYesNo) If ans = True then 'code to End or End Sub 

6. The Worksheet_BeforeDoubleClick (ByVal Target as Range, Cancel as Boolean) Sündmus

See sündmus käivitub, kui topeltklõpsate sihitud lahtril. Selle VBA töölehe sündmuse süntaks on järgmine:

Privaatne alamleht_BeforeDoubleClick (ByVal Target as Range, Cancel as Boolean) End Sub 

Kui te sihtmärki või vahemikku ei määra, käivitatakse see igal lehe topeltklõpsul.
Muutuja Cancel on loogiline muutuja. Kui määrate selle väärtuseks Tõene, ei toimu vaiketoimingut. See tähendab, et kui topeltklõpsate lahtril, ei pääse see redigeerimisrežiimi.
Allolev kood täidab lahtri värviga, kui topeltklõpsate mõnel lahtril.

Privaatne alamleht_BeforeDoubleClick (ByVal Target as Range, Cancel as Boolean) Cancel = True Target.Interior.ColorIndex = 7 End Sub 

Allolev kood on suunatud lahtrile A1. Kui see on juba määratud värviga täidetud, kaob see värv. See on palju nagu meeldimisnupp või märkeruut.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel as Boolean) Kui Target.Address = "$ A $ 1" Siis Cancel = True If Target.Interior.ColorIndex = 4 Siis Target.Interior.ColorIndex = xlColorIndexNone Else Target.Interior.ColorIndex = 4 End If Lõpp Kui Lõpp Alam 

7. The Worksheet_BeforeRightClick (ByVal Target as Range, Cancel as Boolean) Sündmus

See sündmus käivitub, kui paremklõpsate sihitud lahtril. Selle VBA töölehe sündmuse süntaks on järgmine:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel as Boolean) Cancel = True '' your code 'End Sub 

Allolev kood täidab lahtri väärtusega 1, kui paremklõpsate sellel. See ei näita paremklõpsu vaikesuvandeid, kuna oleme määranud operaatori "Tühista" väärtuseks Tõene.

Privaatne alamleht_BeforeRightClick (ByVal Target as Range, Cancel as Boolean) Cancel = True Target.Value = 1 End Sub 

8. The Tööleht_arvuta () Sündmus

Kui soovite, et Exceli lehe arvutamisel midagi juhtuks, kasutage seda sündmust. See käivitub iga kord, kui Excel arvutab lehe. Süntaks on lihtne:

Private Sub Worksheet_Calculate () '' your code 'End Sub 

6. The Worksheet_FollowHyperlink (ByVal Target kui hüperlink)Sündmus

See protseduur käivitub, kui klõpsate lehel hüperlingil. Selle sündmuste käitleja põhisüntaks on järgmine:

Privaatne alamleht_FollowHyperlink (ByVal Target As Hyperlink) '' teie kood 'End Sub 

Soovi korral saate määrata sihthüperlingi. Kui te ei määra sihthüperlingi, käivitatakse see, kui klõpsate koodi sisaldava lehe mis tahes hüperlingil.

Nii et jah, poisid, need olid mõned põhilised töölehe sündmused, mis on kasulikud, kui teate neist. Allpool on mõned seotud artiklid, mida võiksite lugeda.

Kui teil on selle artikli või mõne muu Exceli/VBA -ga seotud artikli osas kahtlusi, andke meile sellest teada allpool olevas kommentaaride osas.

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, kasutades | 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.