Regnearket Begivenheder i Excel VBA

Indholdsfortegnelse:

Anonim

Det kan være en god idé at køre dit makro-/VBA -uddrag, når en celle ændrer sin værdi, når der sker et dobbeltklik, når et ark vælges osv. I alle disse tilfælde bruger vi regnearkhændelseshåndterer. 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 arbejdsark -eventhåndterer.

Hvad er en Worksheets Event Handler?

En regnearkhændelseshåndterer er en underrutine, der er lokal for et regnearksmodul.

Hvor skal man skrive regnearkshændelseshåndtererkode?

Regnearket Begivenheder er kun skrevet i arkobjekter. Hvis du skriver en regnearkhændelse i et modul eller klassemodul, er der ingen fejl, men de vil bare ikke fungere.

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

Hvordan skriver man kode til en bestemt begivenhed på regnearket?

Når du nu er i redigeringstilstand, i rullemenuen i øverste venstre hjørne vil du se generelt. Klik på rullemenuen, og vælg regneark. Nu 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 underprogrammernavne. Du kan ikke bruge dem til andre underrutiner på et ark. I et modul fungerer de som en normal underprogram.

Vigtig: Hver underprogram fra denne liste vil køre på den angivne hændelse.
En type arbejdsarkhændelsesprocedure kan kun skrives én gang på et ark. Hvis du skriver to samme hændelseshåndteringsprocedurer på et ark, 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. DetWorksheet_Change (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 er foretaget ændringer i hele arket, vil koden være:

Private Sub Worksheet_Change (ByVal Target As Range) 'gør noget Msgbox "gjort noget" Afslut Sub 

"Target" er altid den aktive celle.

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

Privat under regneark_ændring (ByVal -mål som område) Hvis Mål.Address = "$ A $ 1" Herefter Range ("B1"). Value2 = Format (Nu (), "hh: mm: ss") End If End Sub 

Dette vil kun målrette cellen A1.

Hvis du vil målrette mod et område, skal du bruge nedenstående eksempel:

Kør makro, hvis der foretages ændringer på ark i specificeret område

2. DetWorksheet_SelectionChange (ByVal Target As Range)Begivenhed

Som navnet antyder, udløses denne hændelse, når valget ændres. Med andre ord, hvis din markør er i celle A1, og den flytter til en anden celle, kører koden i denne underprogram.

Nedenstående kode ændrer den aktive celles farve, hvis den ændres, og hvis den er en lige række.

Private Sub Worksheet_SelectionChange (ByVal Target As Range) If Target.Row Mod 2 = 0 Then Target.Interior.ColorIndex = 22 End If End Sub 

Nu når min markør bevæger sig på lige rækker, bliver den farvet. Ulige rækker vil blive sparet.

Et andet eksempel på hændelsen Worksheet_SelectionChange:

Den enkleste VBA -kode til at fremhæve den aktuelle række og kolonne ved hjælp af

3. Det Worksheet_Activate () Begivenhed

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

Privat under regneark_Aktiver () Afslut sub 

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

Private Sub Worksheet_Activate () MsgBox "Du er på" & ActiveSheet.Name Afslut Sub 

Så snart du kommer på arket, der indeholder denne kode, kører begivenheden, og der vises en meddelelse om, at "Du er på arknavn" (blad 2 er i mit tilfælde).

4. Det Arbejdsark_Deaktiver () Begivenhed

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

Private Sub Worksheet_Deactivate () 'din kode' Afslut Sub 

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

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

5. Det Worksheet_BeforeDelete ()Begivenhed

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

Private Sub Worksheet_BeforeDelete () Slut Sub 

Nedenstående kode vil spørge dig, om du vil kopiere indholdet af arket, der skal slettes.

Private Sub Worksheet_BeforeDelete () ans = MsgBox ("Vil du kopiere indholdet af dette ark til et nyt ark?", VbYesNo) If ans = True Herefter kode for at kopiere End If End Sub 

6. Det Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) Begivenhed

Denne begivenhed udløses, når du dobbeltklikker på den målrettede celle. Syntaksen for denne VBA -regnearkhændelse er:

Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) End Sub 

Hvis du ikke indstiller målcellen eller -området, affyres det ved hvert dobbeltklik på arket.
Annuller -variablen er en boolsk variabel. Hvis du angiver det True, sker standardhandlingen ikke. Det betyder, at hvis du dobbeltklikker på cellen, kommer den ikke i redigeringstilstand.
Nedenstående kode får cellen til at fylde med en farve, 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 

Nedenstående kode er rettet mod cellen A1. Hvis den allerede er fyldt med den angivne farve, forsvinder den farven. Det ligner meget en lignende knap eller afkrydsningsfelt.

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 Afslut hvis slut Sub 

7. Det Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) Begivenhed

Denne begivenhed udløses, når du højreklikker på den målrettede celle. Syntaksen for denne VBA -regnearkhændelse er:

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

Nedenstående kode vil fylde cellen med værdi 1, hvis du højreklikker på den. Det viser ikke standardindstillingerne for højreklik, da vi har indstillet operatøren "Annuller" til Sand.

Private Sub Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) Cancel = True Target.Value = 1 End Sub 

8. Det Worksheet_Calculate () Begivenhed

Hvis du vil have, at der skal ske noget, når en excel beregner et ark, skal du bruge denne begivenhed. Det udløses, når excel beregner et ark. Syntaksen er enkel:

Private Sub Worksheet_Calculate () '' din kode 'Slut Sub 

6. Det Worksheet_FollowHyperlink (ByVal -mål som hyperlink)Begivenhed

Denne procedure kører, når du klikker på et hyperlink på arket. Den grundlæggende syntaks for denne hændelseshandler er:

Private Sub Worksheet_FollowHyperlink (ByVal Target As Hyperlink) '' din kode 'Afslut Sub 

Du kan indstille målhyperlinket, hvis du vil. Hvis du ikke indstiller målhyperlinket, udføres det, hvis du klikker på et hvilket som helst hyperlink på koden, der indeholder arket.

Så ja fyre, det var nogle grundlæggende regnearkbegivenheder, der vil være nyttige, hvis du kender dem. Nedenfor er nogle relaterede artikler, som du kan lide at læse.

Hvis du er i tvivl om denne artikel eller en anden excel/VBA -relateret artikel, lad os vide det i kommentarfeltet herunder.

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.

Enkleste VBA -kode til at fremhæve aktuel 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.