Kā izmantot darbgrāmatas notikumus VBA

Satura rādītājs:

Anonim

Iespējams, vēlēsities palaist savu makro/VBA fragmentu, kad ir atlasīta konkrēta darbgrāmata, atlasīta lapa darbgrāmatā, šūna maina tās vērtību, veicot dubultklikšķi, pievienojot lapu utt. Visos šajos gadījumos mēs izmantojam Darbgrāmatas notikumu apstrādātājs. Notikumu apstrādātājs palīdz mums palaist VBA kodu, kad notiek kāds notikums.

Šajā rakstā mēs īsumā uzzināsim par katru darbgrāmatas notikumu apstrādātāju.

Kas ir darbgrāmatas notikumu apstrādātājs?

Darbgrāmatas notikumu apstrādātājs ir apakšprogramma, kas ir lokāla darbgrāmatai. Šie kodi darbojas tikai uz darbgrāmatas komponentiem. Tā ir pati darbgrāmata, lapas un diapazoni.

Kur rakstīt darbgrāmatas notikumu apstrādātāja kodu?

Darbgrāmatas notikumi ir ierakstīti tikai darbgrāmatas objektā. Ja rakstāt darbgrāmatas notikumu kādā normālā modulī, kļūdu nebūs, bet tie vienkārši nedarbosies.

Lai rakstītu darbgrāmatas objektā. Veiciet dubultklikšķi uz tā vai ar peles labo pogu un noklikšķiniet uz skata koda. Tiks parādīts koda rakstīšanas apgabals.

Kā darbgrāmatā ierakstīt konkrēta notikuma kodu?

Tagad, kad esat rediģēšanas režīmā, augšējā kreisā stūra nolaižamajā izvēlnē redzēsit vispārīgu. Noklikšķiniet uz nolaižamās izvēlnes un atlasiet darbgrāmatu. Augšējā labā stūra nolaižamajā izvēlnē tiks parādīti visi notikumi. Izvēlieties vajadzīgo, un šī notikuma skeleta kods tiks uzrakstīts jums.

Katram notikumam ir noteikts procedūras nosaukums. Šie ir rezervētie apakšprogrammas nosaukumi, kas sākas ar darbgrāmatu_. Jūs nevarat tos izmantot citām apakšprogrammām
(jūs varat, bet tās būs normālas apakšprogrammas).

Svarīgs: Katra apakšprogramma no šī saraksta darbosies norādītajā notikumā.

Viena veida darbgrāmatas notikumu procedūru vienā darbgrāmatā var ierakstīt tikai vienu reizi. Ja vienā darbgrāmatā ierakstīsit divas vienādas notikumu apstrādes procedūras, radīsies kļūda un neviena no tām netiks izpildīta. Protams, kļūda būs neskaidras apakšprogrammas.

Īsi uzzināsim par katru no notikumiem.
1. The Workbook_SheetChange (ByVal Sh kā objekts, ByVal mērķis kā diapazons) Pasākums

Šis notikums tiek aktivizēts, kad veicam kādas izmaiņas darblapu saturā (formatējums nav iekļauts). Ja vēlaties kaut ko darīt, ja kādā lapā ir veiktas izmaiņas, kods būs šāds:

 Private Sub Workbook_SheetChange (ByVal Sh kā objekts, ByVal mērķis kā diapazons) 'kaut ko darīt Msgbox "kaut ko izdarīja" End Sub 

"Sh" vienmēr ir aktīvā lapa. "Mērķis" vienmēr ir aktīvā šūna.

Vēl viens piemērs: Ja A1 mainās, datumu un laiku varat ievietot Cel, prl B1. Tādā gadījumā mēs izmantojam notikumu workbook_sheetchange. Kods izskatītos šādi:

 Privāta apakšdarbgrāmata_SheetChange (ByVal Sh kā objekts, ByVal mērķis kā diapazons) Ja Target.Address = "$ A $ 1" Tad diapazons ("B1"). Value2 = Format (Now (), "hh: mm: ss") End If Beigu apakš 

Tas tiks mērķēts tikai uz šūnu A1 katrā lapā, jo mēs neesam norādījuši "sh" objektu.

2. The Workbook_Activate () Pasākums

Šis notikums tiek aktivizēts, kad tiek aktivizēts notikuma kods, kas satur darbgrāmatu. Šī notikuma skeleta kods ir šāds:

 Privāta apakšdarbgrāmata_Aktivizēt () Beigu apakš

Vienkāršs piemērs ir darbgrāmatas nosaukuma parādīšana, kad tā tiek atlasīta.

 Privāta apakšdarbgrāmata_Aktivēt () MsgBox "Jūs atrodaties darbgrāmatā" un aktīvā darbgrāmata. Nosaukums Beigu apakšdaļa 

Tiklīdz jūs ieradīsities darbgrāmatā, kurā ir šis kods, pasākums tiks palaists un tiks parādīts ziņojums "Jūs atrodaties darbgrāmatas nosaukumā" (manā gadījumā ir lapa 2).
3. The Workbook_Open () Pasākums

Šis ir viens no visbiežāk uzdotajiem jautājumiem, kā palaist makro, tiklīdz tiek atvērta darbgrāmata. Šī ir atbilde. Šis darbgrāmatas notikums tiek izpildīts, tiklīdz tiek atvērta darbgrāmata. Atšķirībā no Workbook_Activate () šis kods darbojas tikai vienu reizi, nevis katru reizi, kad tas tiek aktivizēts.

Private Sub Workbook_Open () 'jūsu kods' End Sub 

Tālāk redzamais piemērs Workbook_Open notikums vienkārši parādīs sveiciena ziņojumu, atverot kodu, kas satur darbgrāmatu.

 Privāta apakšdarbgrāmata_atvērt () MsgBox "Laipni lūdzam galvenajā failā" beigu apakšdaļa

4. The Workbook_Deactivate () Pasākums

Šis notikums rodas, atstājot kodu, kurā ir darbgrāmata. Citiem vārdiem sakot, ja vēlaties kaut ko darīt, piemēram, slēpt lapas vai kaut ko, mainot darbgrāmatu, izmantojiet šo VBA notikumu. Sintakse ir šāda:

 Privāta apakšdarbgrāmata_Deaktivizēt () 'jūsu kods' Beigu apakš 

Tālāk sniegtais piemērs Workbook_Deativate notikums vienkārši parādīs ziņojumu, ka esat pametis galveno lapu, kad pametīsit šo lapu.

 Privāta apakšdarbgrāmata_Deaktivizēt () MsgBox "Jūs atstājāt galveno lapu" beigu apakšdaļa 

5. The Workbook_BeforeClose () Pasākums

Šis notikums tiek aktivizēts, kad apstiprināt VBA notikuma saturošās lapas dzēšanu. Sintakse ir vienkārša:

 Privāta apakšdarbgrāmata_BeforeClose (Atcelt kā Būla) beigu apakš 

Atcelt var iestatīt uz true, ja vēlaties saglabāt darbgrāmatu atvērtu.
Zemāk esošais kods jums jautās, vai vēlaties saglabāt slēgtās darbgrāmatas saturu.

 Privāta apakšdarbgrāmata_BeforeClose (Atcelt kā Būla) ans = MsgBox ("Vai vēlaties saglabāt šīs darbgrāmatas saturu?", VbYesNo) If ans = True, tad šī darbgrāmata.saglabāt beigas Ja beigas 

6. The Workbook_BeforeSave (ByVal SaveAsUI kā Būla, Atcelt kā Būla) Pasākums

Šis notikums tiek aktivizēts, pirms tiek saglabāta darbgrāmata. Sintakse ir vienkārša:

 Privāta apakšdarbgrāmata_BeforeSave (ByVal SaveAsUI kā Būla, Atcelt kā Būla) Beigu apakšdaļa 

SaveAsUI ir iestatīts uz True, ja darbgrāmatā ir izmaiņas (nevis VBA).

Atcelšanu var iestatīt uz true, ja vēlaties saglabāt darbgrāmatu nesaglabātu.

Zemāk esošais kods jums jautās, vai vēlaties saglabāt saglabājamās darbgrāmatas saturu.

 Privāta apakšdarbgrāmata_BeforeSave (ByVal SaveAsUI kā Būla, Atcelt kā Būla) ans = MsgBox ("Vai tiešām vēlaties saglabāt šīs darbgrāmatas saturu?", VbYesNo) If ans = False then Cancel = True End If End Sub 

7. The Workbook_BeforeSave (ByVal SaveAsUI kā Būla, Atcelt kā Būla) Pasākums

Šis notikums tiek aktivizēts, pirms tiek saglabāta darbgrāmata. Sintakse ir vienkārša:

 Privāta apakšdarbgrāmata_BeforeSave (ByVal SaveAsUI kā Būla, Atcelt kā Būla) Beigu apakšdaļa 

SaveAsUI ir iestatīts uz True, ja darbgrāmatā ir izmaiņas (nevis VBA).

Atcelšanu var iestatīt uz true, ja vēlaties saglabāt darbgrāmatu nesaglabātu.

Zemāk esošais kods jums jautās, vai vēlaties saglabāt saglabājamās darbgrāmatas saturu.

 Privāta apakšdarbgrāmata_BeforeSave (ByVal SaveAsUI kā Būla, Atcelt kā Būla) ans = MsgBox ("Vai tiešām vēlaties saglabāt šīs darbgrāmatas saturu?", VbYesNo) If ans = False then Cancel = True End If End Sub 

8. The Workbook_NewSheet (ByVal Sh kā objekts) Pasākums

Šis notikums tiek aktivizēts, pievienojot darblapai jaunu lapu. Sintakse ir vienkārša:

 Privāta apakšdarbgrāmata_Jauna lapa (ByVal Sh kā objekts) Beigu apakš 

Sh ir loksnes objekts. Šis tips patiesībā ir galvenais objekts, tāpēc, ja mēs pievienojam diagrammas lapu, makro lapu vai dialoga lapu, notikums joprojām darbojas.

Zemāk esošais kods pievienos un parādīs tikko pievienotās lapas nosaukumu.

 Privāta apakšdarbgrāmata_Jauna lapa (ByVal Sh kā objekts) MsgBox "Jūs pievienojāt jaunu lapu." & Sh.Name End Sub 

Ir daudz vairāk darbgrāmatas objekta notikumu. Mēs nevaram šeit visus apspriest. Ja vēlaties uzzināt par kādu konkrētu notikumu, jautājiet komentāru sadaļā zemāk. Es ceru, ka šajā rakstā varēju izskaidrot darba burtnīcas notikumu pamatus. Pastāstiet man, vai tas jums palīdzēja komentāru sadaļā zemāk.
Saistītie raksti:

Darblapas maiņas notikuma izmantošana, lai palaistu makro, kad tiek veiktas izmaiņas | Tātad, lai palaistu jūsu makro ikreiz, kad lapa tiek atjaunināta, mēs izmantojam VBA darblapas notikumus.

Palaidiet makro, ja lapā tiek veiktas izmaiņas noteiktā diapazonā | Lai palaistu makro kodu, mainoties vērtībai noteiktā diapazonā, izmantojiet šo VBA kodu. Tas nosaka visas izmaiņas, kas veiktas norādītajā diapazonā, un aktivizēs notikumu.

Vienkāršākais VBA kods, lai izceltu pašreizējo rindu un kolonnu, izmantojot | Izmantojiet šo mazo VBA fragmentu, lai iezīmētu lapas pašreizējo rindu un kolonnu.

Populāri raksti:

50 Excel saīsnes, lai palielinātu produktivitāti | Ātrāk izpildiet savu uzdevumu. Šie 50 saīsnes padarīs jūsu darbu vēl ātrāku programmā Excel.

Funkcija VLOOKUP programmā Excel | Šī ir viena no visbiežāk izmantotajām un populārākajām Excel funkcijām, kas tiek izmantota, lai meklētu vērtību no dažādiem diapazoniem un lapām.

COUNTIF programmā Excel 2016 | Saskaitiet vērtības ar nosacījumiem, izmantojot šo apbrīnojamo funkciju. Jums nav jāfiltrē dati, lai uzskaitītu noteiktu vērtību. Skaitītāja funkcija ir būtiska, lai sagatavotu informācijas paneli.

Kā lietot SUMIF funkciju programmā Excel | Šī ir vēl viena būtiska informācijas paneļa funkcija. Tas palīdz apkopot vērtības noteiktos apstākļos.