Hendelsene i Excel VBA

Innholdsfortegnelse:

Anonim

Generelt er hendelsene ingenting, men skjer med noe. Det er det samme i excel. Men noen ganger vil vi at noe skal skje automatisk når en bestemt hendelse oppstår. For å gjøre noe når en bestemt hendelse skjer i Excel, bruker vi Excel VBA -hendelse.

Excel VBA hendelsesbehandlere: Typer

Det er hovedsakelig 7 typer hendelsesbehandlere i Excel VBA.

  1. Søknadshendelser
  2. Arbeidsbokhendelser
  3. Arbeidsark Hendelser
  4. Kart hendelser
  5. Brukerskjemahendelser
  6. Tastekombinasjon Hendelser (snarvei -hendelser)
  7. Tidsarrangementer

La oss utforske dem en etter en.

Programhendelser i Excel

Hendelser på applikasjonsnivå utløses når programmet (Excel) lukkes, åpnes, aktiveres, beskyttes, ubeskyttet osv.

Det er mer enn 50 typer hendelser på applikasjonsnivå. Så vi kan ikke diskutere dem alle her.

Omfanget av søknadshendelsen:

Disse hendelsene vil fungere på alle arbeidsbøkene til excel, så lenge koden som inneholder arbeidsboken er åpen. For eksempel, hvis du har opprettet en hendelse på applikasjonsnivå for å fortelle deg bladnavnet til det aktive arket, vil det bli utløst ved hver arkaktivering av en arbeidsbok.

Hvordan opprette en programhendelsesbehandler i VBA?

Opprettelsen av applikasjonshendelsen er litt vanskelig. Jeg har forklart det her i detalj med eksempel.

Arbeidsbokhendelser i Excel

Omfanget av arbeidsbokhendelsen

Arbeidsbokhendelsene fungerer på hele arbeidsboken som inneholder koden. Arrangementet kan arbeidsbok åpne, lukke, aktivere, deaktivere, arkendring, etc.

Hvor skal jeg skrive arbeidsbokhendelser?

Arbeidsbokhendelsene er skrevet på arbeidsbokobjektet.

Hvordan skrive en arbeidsbokhendelse?

Følg disse trinnene:

1. I prosjektutforskeren dobbeltklikker du på arbeidsbokobjektet. Kodeskrivingsområdet vises. Alle arbeidsbokens omfangsbegivenheter er skrevet her.

2. Øverst til venstre i kodeskriveområdet ser du en rullegardinmeny. Klikk på rullegardinmenyen og velg arbeidsboken. Som standard er det generelt.

3. Når du har valgt arbeidsboken fra rullegardinmenyen til venstre, vil den som standard sette inn en underprogram for arbeidsbok_åpne hendelser. Men hvis du vil bruke en annen hendelsesprogram, velg den fra rullegardinmenyen øverst til høyre. Den viser alle tilgjengelige arbeidsbokhendelser.

4. Velg arrangementet du trenger. Av eksemplets skyld velger jeg hendelsen SheetActivate. Denne hendelsen utløses på hvert utvalg av arket i koden som inneholder arbeidsbok.

Eksempel på arbeidsbokhendelse:Dette er et enkelt eksempel. Jeg vil bare vise navnet på regnearket som er aktivert. For det bruker jeg ganske enkelt SheetActivate -hendelsen i arbeidsbokobjektet.

Privat sub Workbook_SheetActivate (ByVal Sh As Object) MsgBox Sh.Name & "Activated" End Sub 

Når et nytt ark i denne arbeidsboken blir aktivert, vil denne hendelsen utløses. Du blir bedt om å få massasjen, arknavnet er aktivert.

Jeg vet at denne koden ikke er så nyttig, men du kan sette et sett med instruksjoner mellom disse linjene. Du kan kalle funksjonene og underrutinene fra modulene selv.

Arbeidsarkhendelser i Excel

Alle rekkevidde og cellemålrettede hendelser er skrevet i regnearkhendelsene. Du kan lese om regnearkhendelser her.

Omfanget av regnearkhendelsen

Regnearkhendelsene er målrettet mot områdene og cellene i et bestemt regneark. En regnearkhendelse vil starte på hendelser som skjer på det spesifikke regnearket (regnearket som inneholder koden).

Hvor er regnearkhendelsene skrevet?

Regnearkhendelsene er skrevet på regnearkobjektet.

Hvordan skrive en hendelseshåndteringskode for regneark?

Det er det samme som arbeidsbokhendelsene.

1. I prosjektutforskeren dobbeltklikker du på regnearkobjektet. Kodeskrivingsområdet vises for regnearket. Alle hendelsene i regnearket er skrevet i disse regnearkene.

2. Øverst til venstre i kodeskriveområdet ser du en rullegardinmeny. Klikk på rullegardinmenyen og velg regnearket. Som standard er det generelt.

3. Når du har valgt regnearket fra rullegardinmenyen til venstre, vil det som standard sette inn en rutine_selectionChange event-underprogram. Men hvis du vil bruke en annen hendelsesrutine, velg den fra rullegardinmenyen øverst til høyre. Den viser alle tilgjengelige regnearkhendelser.

4. Velg arrangementet du trenger. Av eksemplets skyld velger jeg hendelsen Worksheet_SelectionChange (ByVal Target As Range). Denne hendelsen utløses ved hver endring av valget av et område på arket.

Eksempel på hendelsesark

Private Sub Worksheet_SelectionChange (ByVal Target As Range) MsgBox "You are in" & Target.Address End Sub 

Hendelsen ovenfor er skrevet i ark1 i en arbeidsbok. Denne hendelsen vil vise områdeadressen, du har valgt på koden som inneholder arket, når du endrer områdevalget. Nedenfor er noen flere eksempler på regnearkhendelser.

Regnearkhendelsene brukes hovedsakelig i dynamiske dashbord. Du kan bruke celler som avmerkingsbokser eller aktive valg for å gjøre dashbordene dynamiske.

Nedenfor er noen flere eksempler på regnearkhendelser.

Bruke regnearksendringshendelse for å kjøre makro når noen endring gjøres

Kjør makro hvis det er gjort endringer på ark i spesifisert område

Enkleste VBA -kode for å markere gjeldende rad og kolonne ved hjelp

Diagramhendelsene

Det er to typer diagramhendelser i Excel. Den ene er de normalt innebygde diagrammer som vi har diskutert her i detalj. Det er omtrent som hendelser på applikasjonsnivå.

En annen er diagramarket. Dette er spesialarkene som bare inneholder diagrammer koblet til data på noen andre ark.

Når det gjelder hendelser, ligner de på vanlige ark.

Hvor skal jeg skrive diagrammer?

Karthendelsene er skrevet i diagramobjektet. Bare dobbeltklikk på diagramarket for å åpne kodeområdet.

Hvordan skrive diagramhendelser?

Følg disse trinnene:

1. I prosjektutforskeren dobbeltklikker du på diagramarkobjektet for å åpne kodeområdet. Alle de spesifikke hendelsesrelaterte hendelsene er skrevet her.

2. I øverste høyre hjørne av kodeområdet ser du den vanlige rullegardinmenyen. Velg diagrammet fra rullegardinmenyen.

3. Velg hendelsen du vil ha fra høyre hjørne.

For eksempel, hvis jeg vil gjøre noe så snart brukeren velger diagrammet, vil jeg bruke Chart_Activate -hendelsen.

Eksempel: Diagramarkhendelse

Private Sub Chart_Activate () MsgBox "Diagrammet er oppdatert" End Sub 

Koden ovenfor vil utløses så snart du velger diagramarket. Her vil det bare vise meldingen om at diagrammet er oppdatert, men du kan gjøre mye. Som om du dynamisk kan velge dataområdet for diagrammet før du viser denne meldingen.

Nedenfor er noen flere eksempler på karthendelser:

UserForm -hendelsene

Brukerskjemahendelsen er akkurat som andre hendelser. Det er flere hendelser som oppstår på brukerskjemaet. Du kan bruke disse hendelsene til å utløse hendelsene.

Hvor skal jeg skrive brukerskjemahendelser?

For å skrive en brukerskjemahendelse må du først sette inn en UserForm.

1. Høyreklikk deretter på UserForm og klikk på visningskoden. Nå åpnes kodeområdet.

2. Velg nå Brukerskjema øverst til venstre.

3. Velg hendelsen du vil bruke for å utføre kodeutførelsen, fra rullegardinmenyen til venstre.

4. Skriv koden du vil ha mellom kodehendelseskoden.

Eksemplet nedenfor viser ganske enkelt meldingen når et brukerskjema er aktivert.

Private Sub UserForm_Activate () MsgBox "Hei, vennligst bekreft informasjonen din." Slutt Sub 

Koden ovenfor viser bare en melding, men du kan bruke denne hendelsen til å forhåndsfylle skjemaet med noen standardinnganger eller bruke arkinformasjon til å fylle det.

Onkey -hendelsen

Disse hendelsene utløses når du trykker på en spesifisert tast eller tastekombinasjon. Det er omtrent som å lage din på snarveier.

OnKey -hendelsen er faktisk en funksjon eller metode for applikasjonsklasse som har to argumenter som vist nedenfor:

Application.onkey Nøkkel, ["prosedyre"]

De nøkkel er tasten eller tastekombinasjonen du vil bruke som utløser.

"Fremgangsmåte" er et valgfritt argument som er et strengnavn på prosedyren eller makroen du vil utløse. Hvis du ikke definerer prosedyren, vil den utløse gjeldende prosedyre.

Hvor skriver jeg Onkey -hendelsene?

Vel, du kan skrive Onkey -hendelsen på en hvilken som helst vanlig modul. De fungerer i vanlige moduler, men først må du kjøre den underprogrammet som inneholder Onkey Instruksjonene. Det er ikke som om du har kjørt makroen hver gang for å bruke Onkey -hendelsene. Bare en gang vil du trenge å kjøre den makroen når du åpner arbeidsboken.

Hvis du ikke vil kjøre makroen som inneholder Onkey -hendelsene, kan du sette dem inn i workbook_open () -hendelsen i arbeidsbokobjektet. Det vil gjøre Onkey -hendelsene aktive så snart du åpner arbeidsboken som inneholder Onkey -hendelsene.

Hvordan skrive en Onkey Event -handler?

Så hvis du allerede har noen makroer du vil kjøre med en spesifisert snarvei, skriver du en ny prosedyre som inneholder listen over snarveier. For eksempel, her har jeg en makro som viser meldingen snarveien fungerer.

Sub show_msg () MsgBox "Snarveien fungerer" Slutt Sub 

Nå vil jeg kjøre denne makroen mens jeg trykker på tastekombinasjonen CTRL+j. For å gjøre det skriver jeg VBA -koden nedenfor.

Sub Activate_Onkey () Application.OnKey "^j", "show_msg" End Sub

"^" (carate) er for CTRL-nøkkel. Nedenfor er tabellen for alle viktige forkortelser i Excel VBA.

https://docs.microsoft.com/en-us/office/vba/api/excel.application.onkey

Hvordan aktivere Onkey -hendelse?

Etter å ha skrevet koden ovenfor i en modul, vil det ikke fungere hvis du går på excel -visningen og bruker CTRL+J -tasten. Først må du kjøre suben som definerer OnKey -hendelsene. Så kjør en gang under Activate_Onkey (), så fungerer det for hele økten. Når du lukker arbeidsboken som inneholder Onkey -definisjonene, slutter den å fungere.

Du kan sette Onkey -definisjonene i prosedyren du vil at skal skje. Men da må du kjøre makroen en gang manuelt. Derfor foreslår jeg å sette Onkey -hendelsene i Workbook_Open -hendelsene. Alle Onkey -hendelser aktiveres automatisk.

Ontime -hendelsen i Excel

Som navnet antyder, utløser Onkey -hendelsen den spesifiserte underrutinen på eller etter den tidligste angitte tiden mulig. Excel kan være opptatt i noen andre oppgaver som å utføre summen av instruksjoner eller å være i kopieringsmodus. I så fall kan det forsinke begivenheten i Ontime. Det er derfor argumentet vises som den tidligste tiden.

Syntaks for OnTime Event

Ontime -hendelsen er en funksjon av applikasjonsklassen. Den har to viktige argumenter og to valgfrie argumenter.

Application.Ontime EarliestTime, "Prosedyre", [LatestTime], [Schedule]

DeTidligste tider tiden du vil at prosedyren skal kjøres. Men Excel vil kjøre den angitte makroen etter den definerte tidligste tiden, bare når den er gratis.

De "Fremgangsmåte" er navnet på prosedyren du vil kjøre på det angitte tidspunktet.

Som jeg sa at det ikke er noen garanti excel vil kjøre prosedyren din til det angitte tidspunktet. De Siste tider tiden etter den tidligste tiden for å gi Excel et vindu for å være fri og utføre oppgaven din.

Hvis du vil deaktivere den planlagte OnTime -hendelsen, må du angi denrute til falsk.

Hvor skal man skrive Ontime Event?

OnTime -hendelsen kan skrives i hvilken som helst modul. Du må utføre hendelsen som inneholder prosedyren for å aktivere hendelsen.

Hvis du vil at aktiviteten din skal aktiveres så snart du åpner arbeidsboken som inneholder hendelsen, legger du den til i arbeidsbok_åpent -hendelsen. Det vil aktivere hendelsen så snart du åpner koden som inneholder hendelsen i excel.

Hvordan skrive Ontime Event?

La oss si at du har en underprogram som viser gjeldende dato og klokkeslett

Sub show_msg () MsgBox "Gjeldende dato og klokkeslett er" & Slutt nå Sub

Hvis du vil at denne prosedyren skal kjøres på etter 5 sekunder etter en annen makro, må du sette denne koden.

Sub OnTimeTest () '-noen andre oppgaver Application.ontime Now + (5 /24 /60 /60), "show_msg" End Sub

Når du har kjørt OnTimeTest -underrutinen, vil den utløse show_msg -underprogrammet etter fem sekunder etter kjøring. Så det vil være bra hvis du vil gjøre noe etter et par ganger med å gjøre noe annet, bruk strukturen ovenfor.

Hvis du vil at makroen skal kjøre seg selv etter noen få sekunder/minutter/timer/etc, kan du kalle den funksjonen selv. Det ville være en slags rekursiv underprogram.

Sub OnTimeTest () MsgBox "Den nåværende datoen og klokkeslettet er" & Now Application.ontime Now + (5 /24 /60 /60), "OnTimeTest" End Sub

Subrutinen ovenfor vil kjøre etter hvert fem-sekund når du starter den.

Så ja gutta, dette er hendelsene i Excel VBA. Noen av de ovennevnte kategoriene har et mangfold av hendelsesutløsere. Selvfølgelig kan jeg ikke forklare dem alle her. Det vil gjøre en bok lang artikkel. Dette var bare en introduksjon til hendelsene som er tilgjengelige i Excel VBA. For mer informasjon, følg koblingene som er innebygd i artiklene. Jeg har nevnt noen relaterte artikler nedenfor. Du kan lese dem også.

Hvis du er i tvil knyttet til denne artikkelen eller andre excel/VBA -tanker, spør oss i kommentarfeltet nedenfor.

Regnearket Hendelser i Excel VBA| Regnearkhendelsen er veldig nyttig når du vil at makroene skal kjøres når en spesifisert hendelse oppstår på arket.

Arbeidsbokhendelser ved bruk av VBA i Microsoft Excel | Arbeidsbokhendelsene fungerer på hele arbeidsboken. Siden alle arkene er en del av arbeidsboken, fungerer disse hendelsene også på dem.

Forhindre at en automacro/eventmacro kjøres ved hjelp av VBA i Microsoft Excel | For å forhindre kjøring av auto_open -makroen, bruk skift -tasten.

Kartlegg objekthendelser ved hjelp av VBA i Microsoft Excel | Diagrammene er komplekse objekter, og det er flere komponenter du har festet dem til. For å lage diagramhendelsene bruker vi klassemodulen.

Populære artikler:

50 Excel -snarveier for å øke produktiviteten | Bli raskere på oppgaven din. Disse 50 snarveiene får deg til å jobbe enda raskere med 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.