Begivenhederne i Excel VBA

Indholdsfortegnelse:

Anonim

Generelt er begivenhederne ikke andet end at der sker noget. Det er det samme i excel. Men nogle gange ønsker vi, at noget skal ske automatisk, når en bestemt hændelse opstår. For at gøre noget, når en bestemt hændelse sker i Excel, bruger vi Excel VBA -begivenhed.

Excel VBA Event Handlers: Typer

Der er hovedsageligt 7 typer begivenhedsbehandlere i Excel VBA.

  1. Ansøgningsbegivenheder
  2. Workbook Events
  3. Arbejdsark begivenheder
  4. Chart begivenheder
  5. Brugerformularhændelser
  6. Tastkombination Hændelser (genvejstasthændelser)
  7. Tidsbegivenheder

Lad os undersøge dem en efter en.

Applikationshændelser i Excel

Begivenheder på applikationsniveau udløses, når applikationen (Excel) lukkes, åbnes, aktiveres, beskyttes, ubeskyttet osv.

Der er mere end 50 typer begivenheder på applikationsniveau. Så vi kan ikke diskutere dem alle her.

Anvendelsesbegivenhedens omfang:

Disse begivenheder fungerer på alle Excel -projektmapper, så længe koden, der indeholder projektmappen, er åben. For eksempel, hvis du har oprettet en begivenhed på applikationsniveau for at fortælle arknavnet på det aktive ark, så vil det blive udløst ved hver arkaktivering af enhver projektmappe.

Hvordan opretter man en programhændelseshandler i VBA?

Oprettelsen af ​​applikationshændelsen er lidt vanskelig. Jeg har forklaret det her detaljeret med eksempel.

Workbook Events i Excel

Arbejdsbogshændelsens omfang

Arbejdsbogshændelserne fungerer på hele projektmappen, der indeholder koden. Begivenheden kan projektmappe åbne, lukke, aktivere, deaktivere, arkændring osv.

Hvor skal man skrive arbejdsbogshændelser?

Arbejdsbogshændelserne er skrevet på projektmappeobjektet.

Hvordan skriver man en arbejdsbogshændelse?

Følg disse trin:

1. I projektudforskeren skal du dobbeltklikke på projektmappeobjektet. Kodeskrivningsområdet vises. Alle arbejdsbogens omfangsbegivenheder er skrevet her.

2. Øverst til venstre i kodeskrivningsområdet vil du se en rullemenu. Klik på rullemenuen, og vælg projektmappen. Som standard er det generelt.

3. Når du har valgt projektmappen i venstre rulleliste, vil den som standard indsætte en workbook_open-hændelsessubrutine. Men hvis du vil bruge en anden hændelsessubrutine, skal du vælge den fra rullemenuen øverst til højre. Det vil liste alle tilgængelige projektmappehændelser.

4. Vælg den begivenhed, du har brug for. Af hensyn til eksemplet vælger jeg SheetActivate -begivenheden. Denne begivenhed udløses på hvert udvalg af arket i den kode, der indeholder projektmappen.

Eksempel på projektmappehændelse:Dette er et enkelt eksempel. Jeg vil bare vise navnet på det regneark, der er aktiveret. Til det bruger jeg simpelthen SheetActivate -hændelsen i projektmappeobjektet.

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

Når der nu aktiveres et nyt ark i denne projektmappe, udløses denne begivenhed. Du vil blive bedt om med massagen, arknavnet er aktiveret.

Jeg ved, at denne kode ikke er så nyttig, men du kan lægge ethvert sæt instruktioner mellem disse linjer. Du kan kalde funktionerne og underprogrammerne fra selve modulerne.

Regneark Begivenheder i Excel

Alle rækkevidde og cellemålrettede hændelser er skrevet i regnearkshændelser. Du kan læse om regnearkbegivenhederne her.

Omfanget af regnearkhændelsen

Regnearkets begivenheder er målrettet mod områder og celler i et specifikt regneark. En regnearkhændelse aktiverer hændelser, der sker på det specifikke regneark (regnearket, der indeholder koden).

Hvor er regnearkhændelserne skrevet?

Regnearkets begivenheder er skrevet på regnearksobjektet.

Hvordan skriver man en regnearkshændelseshåndteringskode?

Det er det samme som arbejdsbogshændelser.

1. I projektudforskeren skal du dobbeltklikke på regnearksobjektet. Kodeskrivningsområdet vises for regnearket. Alle regnearkets omfangsbegivenheder er skrevet i disse regneark.

2. Øverst til venstre i kodeskrivningsområdet vil du se en rullemenu. Klik på rullemenuen, og vælg regnearket. Som standard er det generelt.

3. Når du vælger regnearket i venstre rulleliste, indsætter det som standard en underprogram til regneark_selectionChange-hændelse. Men hvis du vil bruge en anden hændelsessubrutine, skal du vælge den fra rullemenuen øverst til højre. Det vil liste alle tilgængelige regnearkhændelser.

4. Vælg den begivenhed, du har brug for. Af hensyn til eksemplet vælger jeg hændelsen Worksheet_SelectionChange (ByVal Target As Range). Denne begivenhed udløses ved hver ændring af valget af et område på arket.

Eksempel på hændelsesark

Private Sub Worksheet_SelectionChange (ByVal Target As Range) MsgBox "Du er i" & Target.Address End Sub 

Ovenstående begivenhed er skrevet i ark1 i en projektmappe. Denne begivenhed viser rækkevidde -adressen, du har valgt på koden, der indeholder arket, når du ændrer rækkevidden. Nedenfor er nogle flere eksempler på regnearkhændelser.

Regnearkets begivenheder bruges mest i dynamiske dashboards. Du kan bruge celler som afkrydsningsfelter eller aktive markeringer til at gøre dine dashboards dynamiske.

Nedenfor er nogle flere eksempler på regnearkhændelser.

Brug af regnearksændringsbegivenhed til at køre makro, når der foretages ændringer

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

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

Kortbegivenhederne

Der er to typer diagramhændelser i Excel. Den ene er de normalt indlejrede diagrammer, som vi har diskuteret her i detaljer. Det er meget ligesom begivenheder på applikationsniveau.

En anden er diagramarket. Disse er de særlige ark, der kun indeholder diagrammer, der er forbundet med data på nogle andre ark.

Når det kommer til begivenheder, ligner de meget normale ark.

Hvor skal man skrive diagramhændelser?

Kortbegivenhederne er skrevet i diagramobjektet. Dobbeltklik på diagramarket for at åbne kodeområdet.

Hvordan skriver man diagramhændelser?

Følg disse trin:

1. I projektudforskeren skal du dobbeltklikke på diagramarkobjektet for at åbne kodeområdet. Alle de specifikke diagramarkrelaterede begivenheder er skrevet her.

2. I øverste højre hjørne af kodeområdet ser du den sædvanlige rullemenu. Vælg diagrammet fra rullemenuen.

3. Vælg den ønskede begivenhed i højre hjørne.

For eksempel, hvis jeg vil gøre noget, så snart brugeren vælger diagrammet, vil jeg bruge Chart_Activate -hændelsen.

Eksempel: Chart Sheet Event

Privat under Chart_Activate () MsgBox "Diagrammet er opdateret" Afslut Sub 

Ovenstående stykke kode udløses, så snart du vælger diagramarket. Her vil det bare vise meddelelsen om, at diagrammet er opdateret, men du kan gøre meget. Ligesom du dynamisk kan vælge dataintervallet for diagrammet, før du viser denne meddelelse.

Nedenfor er nogle flere eksempler på diagramhændelser:

UserForm -begivenhederne

Brugerformularhændelsen er ligesom andre begivenheder. Der er flere begivenheder, der opstår på brugerformularen. Du kan bruge disse hændelser til at udløse begivenhederne.

Hvor skriver man brugerformularhændelser?

For at skrive en brugerformularhændelse skal du først indsætte en UserForm.

1. Højreklik derefter på UserForm og klik på visningskoden. Nu åbner kodeområdet.

2. Vælg nu brugerformularen øverst til venstre.

3. Vælg den begivenhed, du vil bruge til at udføre kodeudførelsen, i rullemenuen til venstre.

4. Skriv den ønskede kode mellem kodehændelseskoden.

Nedenstående eksempel viser ganske enkelt meddelelsen, når en brugerformular er aktiveret.

Privat underbrugerForm_Aktiver () MsgBox "Hej, venligst dobbeltbekræft dine oplysninger." Afslut Sub 

Ovenstående kode viser bare en meddelelse, men du kan bruge denne hændelse til at udfylde formularen med nogle standardindgange eller bruge arkoplysninger til at udfylde den.

Onkey -begivenheden

Disse hændelser udløses, når der trykkes på en bestemt tast eller kombination. Det er meget ligesom at oprette din på genveje.

OnKey -hændelsen er faktisk en funktion eller metode i applikationsklassen, der har to argumenter som vist nedenfor:

Application.onkey Nøgle, ["procedure"]

Det nøgle er den nøgle eller tastekombination, du vil bruge som trigger.

"Procedure" er et valgfrit argument, der er et strengnavn på proceduren eller makroen, som du vil affyre. Hvis du ikke definerer proceduren, udløses den aktuelle procedure.

Hvor skal man skrive Onkey Events?

Nå, du kan skrive Onkey -begivenheden på ethvert normalt modul. De fungerer i normale moduler, men først skal du bruge den underprogram, der indeholder Onkey -instruktionerne. Det er ikke sådan, at du har kørt makroen hver gang for at bruge Onkey -begivenhederne. Kun én gang skal du bruge denne makro, når du åbner projektmappen.

Hvis du ikke vil køre makroen, der indeholder Onkey -begivenhederne, kan du sætte dem i hændelsen workbook_open () i projektmappeobjektet. Det vil gøre Onkey -begivenhederne aktive, så snart du åbner den projektmappe, der indeholder Onkey -begivenhederne.

Hvordan skriver man en Onkey Event -handler?

Så hvis du allerede har nogle makroer, du vil køre med en bestemt genvej, så skriv en ny procedure, der indeholder listen over genveje. For eksempel har jeg her en makro, der viser meddelelsen om, at genvejen virker.

Sub show_msg () MsgBox "Genvejen virker" Afslut Sub 

Nu vil jeg køre denne makro, da jeg trykker på tastekombinationen CTRL+j. For at gøre det skriver jeg nedenstående VBA -kode.

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

"^" (carate) er til CTRL-tast. Nedenfor er tabellen for alle centrale forkortelser i Excel VBA.

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

Sådan aktiveres Onkey -begivenhed?

Efter at have skrevet ovenstående kode i et modul, hvis du går i excel -visningen og bruger CTRL+J -tasten, virker det ikke. Først skal du køre den sub, der definerer OnKey -begivenhederne. Så kør en gang underen Activate_Onkey (), og så fungerer det for hele sessionen. Når du lukker den projektmappe, der indeholder Onkey -definitionerne, holder den op med at fungere.

Du kan indsætte Onkey -definitionerne inden for den procedure, som du ønsker skal ske. Men så bliver du nødt til at køre makroen en gang manuelt. Derfor foreslår jeg, at du sætter Onkey -begivenhederne i Workbook_Open -begivenhederne. Det vil få alle Onkey -begivenheder til at aktivere automatisk.

Begivenheden i gang i Excel

Som navnet antyder, udløser Onkey -hændelsen den angivne underprogram på eller efter den tidligst angivne tid. Excel kan være optaget i nogle andre opgaver som f.eks. At udføre summen af ​​instruktioner eller være i kopieret tidligere tilstand. I så fald kan det forsinke begivenheden i Ontime. Derfor vises argumentet som den tidligste tid.

Syntaks for OnTime Event

Begivenheden Ontime er en funktion af klassen Application. Det har to væsentlige argumenter og to valgfrie argumenter.

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

DetTidligste tider det tidspunkt, hvor du vil have din procedure til at køre. Men Excel kører den angivne makro efter den definerede tidligste tid, kun når den er gratis.

Det "Procedure" er navnet på den procedure, du vil køre på det angivne tidspunkt.

Som jeg sagde, at der ikke er nogen garanti, excel vil køre din procedure på det angivne tidspunkt. Det Sidste tider tiden efter den tidligste tid til at give Excel et vindue til at være fri og udføre din opgave.

Hvis du vil deaktivere din planlagte OnTime -begivenhed, skal du indstille dentidsplan til falsk.

Hvor skal man skrive Ontime Event?

OnTime -begivenheden kan skrives i ethvert modul. Du bliver nødt til at udføre den begivenhed, der indeholder proceduren for at aktivere begivenheden.

Hvis du vil have, at din begivenhed skal aktiveres, så snart du åbner den projektmappe, der indeholder begivenheden, skal du placere den i hændelsen workbook_open. Det aktiverer begivenheden, så snart du åbner koden, der indeholder begivenheden i excel.

Hvordan skriver man Ontime Event?

Lad os sige, at du har en underprogram, der viser den aktuelle dato og klokkeslæt

Sub show_msg () MsgBox "Den aktuelle dato og tid er" & Afslut nu Sub

Hvis du vil have denne procedure til at køre efter 5 sekunder efter en anden makros kørsel, skal du sætte denne kode.

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

Når du har kørt OnTimeTest -underrutinen, vil den efter fem sekunder af dens kørsel udløse show_msg -underprogrammet. Så det vil være godt, hvis du vil gøre noget efter et par gange med at gøre noget andet, brug ovenstående struktur.

Hvis du vil have din makro til at køre sig selv efter hvert par sekunder/minutter/timer/etc, kan du kalde den funktion selv. Det ville være en slags rekursiv underprogram.

Sub OnTimeTest () MsgBox "Den aktuelle dato og tid er" & Now Application.ontime Now + (5 /24 /60 /60), "OnTimeTest" End Sub

Ovenstående underprogram kører efter hvert fem sekund, når du starter den.

Så ja fyre, det er begivenhederne i Excel VBA. Nogle af de ovennævnte kategorier har en mangfoldighed af begivenheder, der udløser. Jeg kan naturligvis ikke forklare dem alle her. Det vil gøre en bog til en lang artikel. Dette var blot en introduktion til de begivenheder, der er tilgængelige i Excel VBA. For mere information følg de links, der er integreret i artiklerne. Jeg har nævnt nogle relaterede artikler nedenfor. Du kan også læse dem.

Hvis du er i tvivl om denne artikel eller andre excel/VBA -tanker, så spørg os i kommentarfeltet herunder.

Regnearket Begivenheder i Excel VBA| Regnearkshændelsen er virkelig nyttig, når du vil have dine makroer kørt, når en bestemt hændelse forekommer på arket.

Arbejdsbogshændelser ved hjælp af VBA i Microsoft Excel | Arbejdsbogshændelserne fungerer på hele projektmappen. Da alle arkene er en del af projektmappen, fungerer disse begivenheder også på dem.

Forhindre, at en automacro/eventmacro udføres ved hjælp af VBA i Microsoft Excel | For at forhindre kørsel af auto_open -makroen skal du bruge shift -tasten.

Kortobjekthændelser ved hjælp af VBA i Microsoft Excel | Diagrammerne er komplekse objekter, og der er flere komponenter, du har knyttet dem til. For at lave diagramhændelserne bruger vi klasse -modulet.

Populære artikler:

50 Excel -genveje til at øge din produktivitet | Få hurtigere til din opgave. Disse 50 genveje får dig til at 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 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.