Det kan være lurt å kjøre makro-/VBA -kodebiten når en celle endrer verdien, når et dobbeltklikk skjer, når et ark velges osv. I alle disse tilfellene bruker vi Worksheet Event Handler. 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 regneark hendelseshåndterer.
Hva er en Worksheets Event Handler?
En hendelsesbehandler for regneark er en underrutine som er lokal for en regnearkmodul.
Hvor skal jeg skrive koden for regneark hendelseshåndtering?
Regnearket Hendelser skrives bare i arkobjekter. Hvis du skriver en regnearkhendelse i en eller annen modul, vil det ikke være noen feil, men de vil bare ikke fungere.
For å skrive i arkobjektet. Dobbeltklikk på den eller høyreklikk og klikk på visningskoden. Kodeskrivingsområdet vises.
Hvordan skrive kode for en bestemt hendelse på regnearket?
Når du er i redigeringsmodus, vil du se generell i nedtrekksmenyen øverst til venstre. Klikk på rullegardinmenyen og velg regneark. Nå i rullegardinmenyen øverst til høyre, vil alle hendelser vises. 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 underrutinene. Du kan ikke bruke dem til andre underrutiner på et ark. I en modul vil de fungere som en normal subrutine.
Viktig: Hver underprogram fra listen vil kjøre på den angitte hendelsen.
En type arbeidsarkhendelsesprosedyre kan bare skrives én gang på ett ark. Hvis du skriver to samme hendelseshåndteringsprosedyrer på ett ark, 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. DeWorksheet_Change (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 hele arket, vil koden være:
Private Sub Worksheet_Change (ByVal Target As Range) 'do somehting Msgbox "done something" End Sub
"Målet" er alltid den aktive cellen.
Et annet eksempel: Det kan være lurt å sette dato og klokkeslett i celle B1 hvis A1 endres. I så fall bruker vi worksheet_change -hendelsen. Koden vil se slik ut:
Private Sub Worksheet_Change (ByVal Target As Range) If Mål.Address = "$ A $ 1" Deretter Range ("B1"). Value2 = Format (Now (), "hh: mm: ss") End If End Sub
Dette vil bare målrette cellen A1.
Hvis du vil målrette mot et område, kan du bruke eksemplet nedenfor:
Kjør makro hvis det er gjort endringer på ark i spesifisert område
2. DeWorksheet_SelectionChange (ByVal Target As Range)Begivenhet
Som navnet antyder, utløses denne hendelsen når utvalget endres. Med andre ord, hvis markøren er i celle A1 og den flytter til en annen celle, vil koden i denne underprogrammet kjøre.
Koden nedenfor vil endre fargen på de aktive cellene hvis den endres og hvis den er en jevn rad.
Private Sub Worksheet_SelectionChange (ByVal Target As Range) If Target.Row Mod 2 = 0 Then Target.Interior.ColorIndex = 22 End If End Sub
Nå, når markøren min beveger seg på en jevn rad, vil den bli farget. Ulike radceller blir spart.
Et annet eksempel på Worksheet_SelectionChange -hendelsen:
Enkleste VBA -kode for å markere gjeldende rad og kolonne ved hjelp
3. De Worksheet_Activate () Begivenhet
Denne hendelsen utløses når hendelseskoden som inneholder arket aktiveres. Skjelettkoden for denne hendelsen er:
Private Sub Worksheet_Activate () End Sub
Et enkelt eksempel er å vise arknavnet når det blir valgt.
Private Sub Worksheet_Activate () MsgBox "You are on" og ActiveSheet.Name Slutt Sub
Så snart du kommer på arket som inneholder denne koden, vil hendelsen kjøre og det vil bli vist en melding om at "Du er på arknavn" (ark2 er i mitt tilfelle).
4. De Arbeidsark_Deaktiver () Begivenhet
Denne hendelsen utløses når koden inneholder arket forlates. Med andre ord, hvis du vil gjøre noe, som å skjule rader eller noe når du forlater arket, kan du bruke denne VBA -hendelsen. Syntaksen er:
Private Sub Worksheet_Deactivate () 'din kode' Slutt Sub
Eksemplet nedenfor Worksheet_Deativate -hendelsen vil ganske enkelt dukke opp en melding om at du har forlatt hovedarket, når du forlater dette arket.
Private Sub Worksheet_Deactivate () MsgBox "Du forlot hovedarket" Slutt Sub
5. De Worksheet_BeforeDelete ()Begivenhet
Denne hendelsen utløses når du bekrefter sletting av arket som inneholder VBA -hendelsen. Syntaksen er enkel:
Private Sub Worksheet_BeforeDelete () Slutt Sub
Koden nedenfor vil spørre deg om du vil kopiere innholdet i arket som skal slettes.
Private Sub Worksheet_BeforeDelete () ans = MsgBox ("Vil du kopiere innholdet i dette arket til et nytt ark?", VbYesNo) If ans = True Then 'code to copy End If End Sub
6. De Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) Begivenhet
Denne hendelsen utløses når du dobbeltklikker på målcellen. Syntaksen til denne VBA -regnearkhendelsen er:
Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) Slutt Sub
Hvis du ikke angir målcellen eller -området, vil den utløses ved hvert dobbeltklikk på arket.
Avbryt -variabelen er en boolsk variabel. Hvis du angir det True, skjer ikke standardhandlingen. Det betyr at hvis du dobbeltklikker på cellen, kommer den ikke inn i redigeringsmodus.
Koden nedenfor får cellen til å fylle med en farge hvis du dobbeltklikker på en celle.
Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) Cancel = True Target.Interior.ColorIndex = 7 End Sub
Koden nedenfor er rettet mot cellen A1. Hvis den allerede er fylt med den angitte fargen, vil den forsvinne fargen. Det er omtrent som en like -knapp eller avmerkingsboks.
Privat sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$ A $ 1" Then Cancel = True If Target.Interior.ColorIndex = 4 Then Target.Interior.ColorIndex = xlColorIndexNone Else Target.Interior.ColorIndex = 4 End If Slutt hvis slutt Sub
7. De Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) Begivenhet
Denne hendelsen utløses når du høyreklikker på målcellen. Syntaksen til denne VBA -regnearkhendelsen er:
Privat sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True '' your code 'End Sub
Koden nedenfor vil fylle cellen med verdi 1 hvis du høyreklikker på den. Det vil ikke vise standard høyreklikk-alternativer siden vi har satt "Avbryt" -operatoren til True.
Private Sub Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) Cancel = True Target.Value = 1 End Sub
8. De Worksheet_Calculate () Begivenhet
Hvis du vil at noe skal skje når en excel beregner et ark, kan du bruke denne hendelsen. Det vil utløse når excel beregner et ark. Syntaksen er enkel:
Private Sub Worksheet_Calculate () '' din kode '' End Sub
6. De Worksheet_FollowHyperlink (ByVal -mål som hyperkobling)Begivenhet
Denne prosedyren kjøres når du klikker på en hyperkobling på arket. Den grunnleggende syntaksen til denne hendelsesbehandleren er:
Private Sub Worksheet_FollowHyperlink (ByVal Target As Hyperlink) '' koden din '' End Sub
Du kan angi målhyperlenken hvis du vil. Hvis du ikke angir målhyperlenken, blir den utført hvis du klikker på en hvilken som helst hyperkobling på koden som inneholder arket.
Så ja, dette var noen grunnleggende regnearkhendelser som vil være nyttige hvis du vet om dem. Nedenfor er noen relaterte artikler som du kanskje vil lese.
Hvis du er i tvil om denne artikkelen eller en annen Excel/VBA -relatert artikkel, gi oss beskjed i kommentarfeltet nedenfor.
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 av | 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.