Sådan bruges arbejdsbogshændelser i VBA

Indholdsfortegnelse:

Anonim

Det kan være en god idé at køre din makro/VBA -uddrag, når der vælges en bestemt projektmappe, et ark i projektmappen vælges, cellen ændrer dens værdi, når der sker et dobbeltklik, når et ark tilføjes osv. I alle disse tilfælde bruger vi Arbejdsbog Event Handler. Event Handler hjælper os med at køre VBA -kode, når der sker en bestemt hændelse.

I denne artikel lærer vi kort om hver Workbook Event Handler.

Hvad er en Workbook Event Handler?

En projektmappehændelseshåndterer er en underrutine, der er lokal for en projektmappe. Disse koder fungerer kun på komponenterne i en projektmappe. Det er selve projektmappen, det er ark og intervaller.

Hvor skal man skrive Workbook Event Handler Code?

Arbejdsbogshændelserne er kun skrevet i projektmappeobjektet. Hvis du skriver en projektmappehændelse i et normalt modul, er der ingen fejl, men de vil bare ikke fungere.

At skrive i projektmappeobjektet. Dobbeltklik på den eller højreklik og klik på visningskoden. Kodeskrivningsområdet vises.

Hvordan skriver man kode til en bestemt begivenhed i projektmappen?

Når du nu er i redigeringstilstand, i rullemenuen i øverste venstre hjørne, ser du generelt. Klik på rullemenuen, og vælg projektmappen. I rullemenuen øverst til højre vises alle begivenheder. Vælg den, du har brug for, og der vil blive skrevet en skeletkode til den begivenhed for dig.

Hver begivenhed har et fast procedurnavn. Disse er de reserverede underrutin navne, der starter med projektmappe_. Du kan ikke bruge dem til andre underprogrammer
(du kan, men de vil være normale underrutiner).

Vigtig: Hver underprogram fra denne liste vil køre på den angivne hændelse.

En type arbejdsbogshændelsesprocedure kan kun skrives én gang på en projektmappe. Hvis du skriver to samme hændelseshåndteringsprocedurer i en projektmappe, vil det resultere i en fejl, og ingen af ​​dem vil blive udført. Selvfølgelig vil fejlen være tvetydige underrutiner.

Lad os kort lære om hver af begivenhederne.
1. Det Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) Begivenhed

Denne hændelse udløser, når vi foretager ændringer til at indeholde regneark (formatering ekskluderet). Hvis du vil gøre noget, hvis der foretages ændringer i et ark, vil koden være:

 Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) 'gør noget Msgbox "gjort noget" Afslut Sub 

"Sh" er altid det aktive ark. "Target" er altid den aktive celle.

Et andet eksempel: Du vil måske angive dato og klokkeslæt i Cel, prl B1, hvis A1 ændres. I så fald bruger vi hændelsen workbook_sheetchange. Koden ville se sådan ud:

 Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$ A $ 1" Then Range ("B1"). Value2 = Format (Now (), "hh: mm: ss") End If Afslut Sub 

Dette vil kun målrette cellen A1 på hvert ark, da vi ikke har specificeret "sh" -objektet.

2. Det Workbook_Activate () Begivenhed

Denne hændelse udløses, når hændelseskoden, der indeholder projektmappen, aktiveres. Skeletkoden for denne begivenhed er:

 Private Sub Workbook_Activate () Afslut Sub

Et enkelt eksempel viser projektmappens navn, når det bliver valgt.

 Private Sub Workbook_Activate () MsgBox "Du er på projektmappe" og Activeworkbook.Name Afslut Sub 

Så snart du kommer på projektmappen, der indeholder denne kode, kører begivenheden, og der vises en meddelelse om, at "Du er på projektmappens navn" (blad 2 er i mit tilfælde).
3. Det Workbook_Open () Begivenhed

Dette er et af de mest stillede spørgsmål om, hvordan man kører en makro, så snart projektmappen åbnes. Dette er svaret. Denne projektmappehændelse køres, så snart projektmappen åbnes. I modsætning til Workbook_Activate () kører denne kode kun én gang, ikke hver gang den aktiveres.

Private Sub Workbook_Open () 'din kode' Afslut Sub 

Nedenstående eksempel Workbook_Open -begivenhed dukker simpelthen op en velkomstbesked, når du åbner koden, der indeholder projektmappen.

 Private Sub Workbook_Open () MsgBox "Velkommen til masterfilen" Slut Sub

4. Det Workbook_Deactivate () Begivenhed

Denne hændelse udløses, når koden, der indeholder projektmappen, forlades. Med andre ord, hvis du vil gøre noget, som at skjule ark eller noget, når du skifter projektmappe, skal du bruge denne VBA -begivenhed. Syntaksen er:

 Private Sub Workbook_Deactivate () 'din kode' Afslut Sub 

Nedenstående eksempel Workbook_Deativate -begivenhed vil simpelthen dukke op en besked om, at du har forladt hovedarket, når du forlader dette ark.

 Private Sub Workbook_Deactivate () MsgBox "Du forlod hovedarket" Afslut Sub 

5. Det Workbook_BeforeClose () Begivenhed

Denne hændelse udløses, når du bekræfter sletningen af ​​det VBA -arrangement, der indeholder ark. Syntaksen er enkel:

 Private Sub Workbook_BeforeClose (Cancel as Boolean) Afslut Sub 

Annuller kan sættes til sand, hvis du vil holde projektmappen åben.
Nedenstående kode vil spørge dig, om du vil gemme indholdet i projektbogen om -til -lukning.

 Private Sub Workbook_BeforeClose (Cancel as Boolean) ans = MsgBox ("Vil du gemme indholdet i denne projektmappe?", VbYesNo) If ans = True Then thisworkbook.save End If End Sub 

6. Det Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) Begivenhed

Denne hændelse udløses, før projektmappen gemmes. Syntaksen er enkel:

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) End Sub 

SaveAsUI er indstillet True, hvis der er en ændring i projektmappen (ikke i VBA).

Annuller kan sættes til sand, hvis du vil beholde projektmappen uden at blive gemt.

Nedenstående kode vil spørge dig, om du vil gemme indholdet i projektbogen, der skal gemmes.

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel as Boolean) ans = MsgBox ("Vil du virkelig gemme indholdet i denne projektmappe?", VbYesNo) If ans = False Then Cancel = True End If End Sub 

7. Det Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) Begivenhed

Denne hændelse udløses, før projektmappen gemmes. Syntaksen er enkel:

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) Afslut Sub 

SaveAsUI er indstillet True, hvis der er en ændring i projektmappen (ikke i VBA).

Annuller kan sættes til sand, hvis du vil beholde projektmappen uden at blive gemt.

Nedenstående kode vil spørge dig, om du vil gemme indholdet i projektbogen, der skal lagres.

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel as Boolean) ans = MsgBox ("Vil du virkelig gemme indholdet i denne projektmappe?", VbYesNo) If ans = False Then Cancel = True End If End Sub 

8. Det Workbook_NewSheet (ByVal Sh As Object) Begivenhed

Denne begivenhed udløses, når du tilføjer et nyt ark til projektmappen. Syntaksen er enkel:

 Private Sub Workbook_NewSheet (ByVal Sh As Object) End Sub 

Sh'en er arkobjektet. Typen er faktisk et kerneobjekt, så hvis vi tilføjer et diagramark, et makroark eller et dialogark, fungerer hændelsen stadig.

Nedenstående kode tilføjer og viser navnet på det ark, der er tilføjet.

 Private Sub Workbook_NewSheet (ByVal Sh As Object) MsgBox "Du har tilføjet et nyt ark." & Sh.Name End Sub 

Det er mange flere begivenheder i projektmappeobjektet. Vi kan ikke diskutere dem alle her. Hvis du vil vide om en bestemt begivenhed, så spørg i kommentarfeltet herunder. Jeg håber, at jeg var i stand til at forklare det grundlæggende i projektmappehændelserne i denne artikel. Lad mig vide, om det hjalp dig i kommentarfeltet herunder.
Relaterede artikler:

Brug af regnearksændringsbegivenhed til at køre makro, når der foretages ændringer | Så for at køre din makro, når arket opdateres, bruger vi regnearkhændelser i VBA.

Kør makro, hvis der foretages ændringer på ark i specificeret område | Hvis du vil køre din makrokode, når værdien i et bestemt område ændres, skal du bruge denne VBA -kode. Det registrerer enhver ændring, der er foretaget i det angivne område, og afbryder begivenheden.

Den enkleste VBA -kode til at fremhæve den aktuelle række og kolonne ved hjælp af | Brug dette lille VBA -udsnit til at fremhæve den aktuelle række og kolonne i arket.

Populære artikler:

50 Excel -genveje til at øge din produktivitet | Få hurtigere til din opgave. Disse 50 genveje gør dit arbejde endnu hurtigere i Excel.

VLOOKUP -funktionen i Excel | Dette er en af ​​de mest anvendte og populære funktioner i excel, der bruges til at slå værdi op fra forskellige områder og ark.

COUNTIF i Excel 2016 | Tæl værdier med betingelser ved hjælp af denne fantastiske funktion. Du behøver ikke at filtrere dine data for at tælle specifik værdi. Countif -funktion er afgørende for at forberede dit dashboard.

Sådan bruges SUMIF -funktionen i Excel | Dette er endnu en vigtig instrumentbrætfunktion. Dette hjælper dig med at opsummere værdier på bestemte betingelser.