Det kan være lurt å kjøre makro-/VBA -kodebiten når en bestemt arbeidsbok er valgt. Et ark i arbeidsboken er valgt, cellen endrer verdien, når et dobbeltklikk skjer, et ark legges til osv. I alle disse tilfellene bruker vi Arbeidsbok hendelseshåndterer. Event Handler hjelper oss med å kjøre VBA -kode når en bestemt hendelse oppstår.
I denne artikkelen lærer vi kort om hver arbeidsbok hendelseshåndterer.
Hva er en Workbook Event Handler?
En arbeidsbokhendelseshåndterer er en underrutine som er lokal for en arbeidsbok. Disse kodene fungerer bare på komponentene i en arbeidsbok. Det er selve arbeidsboken, det er ark og områder.
Hvor skal jeg skrive Workbook Event Handler Code?
Arbeidsbokhendelsene er bare skrevet i arbeidsbokobjektet. Hvis du skriver en arbeidsbokhendelse i en normal modul, vil det ikke være noen feil, men de vil bare ikke fungere.
For å skrive i arbeidsbokobjektet. Dobbeltklikk på den eller høyreklikk og klikk på visningskoden. Kodeskrivingsområdet vises.
Hvordan skrive kode for en bestemt hendelse i arbeidsboken?
Når du er i redigeringsmodus, i rullegardinmenyen øverst til venstre, ser du generelt. Klikk på rullegardinmenyen og velg arbeidsboken. I nedtrekksmenyen øverst til høyre vises alle hendelser. Velg det du trenger, og en skjelettkode for den hendelsen vil bli skrevet for deg.
Hver hendelse har et fast prosedyrenavn. Dette er de reserverte underprogramnavnene som starter med arbeidsbok_. Du kan ikke bruke dem til andre underprogrammer
(du kan, men de vil være normale subrutiner).
Viktig: Hver underprogram fra listen vil kjøre på den angitte hendelsen.
En type arbeidsbokhendelsesprosedyre kan bare skrives én gang på én arbeidsbok. Hvis du skriver to samme hendelseshåndteringsprosedyrer i en arbeidsbok, vil det resultere i en feil, og ingen av dem vil bli utført. Selvfølgelig vil feilen være tvetydige underrutiner.
La oss lære kort om hver av hendelsene.
1. De Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) Begivenhet
Denne hendelsen utløses når vi gjør endringer i å inneholde regneark (formatering ekskludert). Hvis du vil gjøre noe hvis det er gjort noen endringer i et ark, vil koden være:
Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) 'gjør noe Msgbox "gjort noe" Slutt Sub
"Sh" er alltid det aktive arket. "Målet" er alltid den aktive cellen.
Et annet eksempel: Det kan være lurt å sette dato og klokkeslett i Cel, prl B1 hvis A1 endres. I så fall bruker vi hendelsen workbook_sheetchange. Koden vil se slik ut:
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 Slutt Sub
Dette vil bare målrette cellen A1 på hvert ark siden vi ikke har spesifisert "sh" -objektet.
2. De Workbook_Activate () Begivenhet
Denne hendelsen utløses når hendelseskoden som inneholder arbeidsboken aktiveres. Skjelettkoden for denne hendelsen er:
Private Sub Workbook_Activate () Slutt Sub
Et enkelt eksempel er å vise arbeidsboknavnet når det blir valgt.
Private Sub Workbook_Activate () MsgBox "You are on workbook" & Activeworkbook.Name End Sub
Så snart du kommer til arbeidsboken som inneholder denne koden, vil hendelsen kjøre og det vil bli vist en melding om at "Du er på arbeidsboknavn" (ark2 er i mitt tilfelle).
3. De Workbook_Open () Begivenhet
Dette er det mest stilte spørsmålet om hvordan du kjører en makro så snart arbeidsboken åpnes. Dette er svaret. Denne arbeidsbokhendelsen kjøres så snart arbeidsboken åpnes. I motsetning til Workbook_Activate () kjører denne koden bare én gang, ikke når den aktiveres hver gang.
Private Sub Workbook_Open () 'din kode' Slutt Sub
Eksemplet nedenfor Workbook_Open -hendelsen vil ganske enkelt dukke opp en velkomstmelding når du åpner koden som inneholder arbeidsboken.
Private Sub Workbook_Open () MsgBox "Welcome to the Master File" End Sub
4. De Workbook_Deactivate () Begivenhet
Denne hendelsen utløses når koden som inneholder arbeidsboken forlates. Med andre ord, hvis du vil gjøre noe, som å skjule ark eller noe når du bytter arbeidsbok, bruk denne VBA -hendelsen. Syntaksen er:
Private Sub Workbook_Deactivate () 'din kode' Avslutt Sub
Eksemplet nedenfor Workbook_Deativate -hendelsen vil ganske enkelt dukke opp en melding om at du har forlatt hovedarket, når du forlater dette arket.
Private Sub Workbook_Deactivate () MsgBox "Du forlot hovedarket" Slutt Sub
5. De Workbook_BeforeClose () Begivenhet
Denne hendelsen utløses når du bekrefter sletting av arket som inneholder VBA -hendelsen. Syntaksen er enkel:
Private Sub Workbook_BeforeClose (Cancel as Boolean) Slutt Sub
Avbryt kan settes til sann hvis du vil holde arbeidsboken åpen.
Koden nedenfor vil spørre deg om du vil lagre innholdet i arbeidsboka som skal lukkes.
Private Sub Workbook_BeforeClose (Cancel as Boolean) ans = MsgBox ("Vil du lagre innholdet i denne arbeidsboken?", VbYesNo) If ans = True Then thisworkbook.save End If End Sub
6. De Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) Begivenhet
Denne hendelsen utløses når arbeidsboken lagres. Syntaksen er enkel:
Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) Slutt Sub
SaveAsUI er satt True hvis det er en endring i arbeidsboken (ikke i VBA).
Avbryt kan settes til true hvis du vil beholde arbeidsboken som ikke er lagret.
Koden nedenfor vil spørre deg om du vil lagre innholdet i arbeidsboken som skal lagres.
Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel as Boolean) ans = MsgBox ("Vil du virkelig lagre innholdet i denne arbeidsboken?", VbYesNo) If ans = False Then Cancel = True End If End Sub
7. De Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) Begivenhet
Denne hendelsen utløses når arbeidsboken er lagret. Syntaksen er enkel:
Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) Slutt Sub
SaveAsUI er satt True hvis det er en endring i arbeidsboken (ikke i VBA).
Avbryt kan settes til true hvis du vil beholde arbeidsboken som ikke er lagret.
Koden nedenfor vil spørre deg om du vil lagre innholdet i arbeidsboken som skal lagres.
Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel as Boolean) ans = MsgBox ("Vil du virkelig lagre innholdet i denne arbeidsboken?", VbYesNo) If ans = False Then Cancel = True End If End Sub
8. De Workbook_NewSheet (ByVal Sh As Object) Begivenhet
Denne hendelsen utløses når du legger til et nytt ark i arbeidsboken. Syntaksen er enkel:
Private Sub Workbook_NewSheet (ByVal Sh As Object) End Sub
Sh er arkobjektet. Typen er faktisk et kjerneobjekt, slik at hvis vi legger til et diagramark, et makroark eller et dialogark, fungerer hendelsen fremdeles.
Koden nedenfor legger til og viser navnet på arket som er nylig lagt til.
Private Sub Workbook_NewSheet (ByVal Sh As Object) MsgBox "Du har lagt til et nytt ark." & Sh.Name Slutt Sub
Det er mange flere hendelser i arbeidsbokobjektet. Vi kan ikke diskutere dem alle her. Hvis du vil vite om en bestemt hendelse, kan du spørre i kommentarfeltet nedenfor. Jeg håper jeg var i stand til å forklare det grunnleggende om arbeidsbokhendelsene i denne artikkelen. Gi meg beskjed om det hjalp deg i kommentarfeltet nedenfor.
Relaterte artikler:
Bruke regnearksendringshendelse for å kjøre makro når noen endring gjøres | Så for å kjøre makroen din når arket oppdateres, bruker vi regnearkhendelser i VBA.
Kjør makro hvis det er gjort endringer på ark i spesifisert område | Bruk denne VBA -koden for å kjøre makrokoden når verdien i et spesifisert område endres. Den oppdager alle endringer som er gjort i det angitte området, og vil utløse hendelsen.
Enkleste VBA -kode for å markere gjeldende rad og kolonne ved hjelp | Bruk denne lille VBA -biten til å markere gjeldende rad og kolonne i arket.
Populære artikler:
50 Excel -snarveier for å øke produktiviteten | Bli raskere på oppgaven din. Disse 50 snarveiene vil gjøre arbeidet ditt enda raskere i Excel.
VLOOKUP -funksjonen i Excel | Dette er en av de mest brukte og populære funksjonene til excel som brukes til å slå opp verdi fra forskjellige områder og ark.
COUNTIF i Excel 2016 | Tell verdier med betingelser ved hjelp av denne fantastiske funksjonen. Du trenger ikke å filtrere dataene dine for å telle spesifikk verdi. Countif -funksjonen er avgjørende for å forberede dashbordet.
Slik bruker du SUMIF -funksjonen i Excel | Dette er en annen viktig funksjon på dashbordet. Dette hjelper deg med å oppsummere verdier på spesifikke forhold.