Hvordan lage hendelser på applikasjonsnivå i Excel VBA

Innholdsfortegnelse:

Anonim

Hendelser på applikasjonsnivå fungerer på hele applikasjonen (Excel i denne referansen). Men det er ikke like enkelt å aktivere programhendelsen som å lage arbeidsbok eller regnearkhendelser. Men jeg kan forsikre deg om at det ikke er så vanskelig også. I denne artikkelen lærer vi hvordan du oppretter og bruker applikasjonshendelsen i Excel VBA i noen få enkle trinn.

Trinn 1: Lag et hendelsesobjekt i en klassemodul

For å lage et hendelsesobjekt må vi bruke klassemodulen.

  • Sett inn en klassemodul. Gi det navnet du vil. Jeg kalte den MyAppEvents.
  • Definer en hendelsesvariabel for applikasjonstype med søkeordet WithEvents.
    Private WithEvents myApp Som applikasjon
  • Initialiser denne hendelsen i class_initialize () underprogram.
    Velg klasse fra rullegardinmenyen til venstre. Velg deretter initialiser øverst til høyre på rullegardinlisten.

    Private Sub Class_Initialize () Set myApp = Application End Sub
  • Nå definer hendelsene du vil bruke. Velg hendelsesobjektet fra rullegardinmenyen øverst til venstre. Alle tilgjengelige prosedyrer for håndtering av hendelser vil være tilgjengelige for deg i nedtrekksmenyen øverst til høyre. Velg det du trenger, og definer hva du vil gjøre når hendelsen utløses.
    Jeg bruker SheetActivate -hendelsen. Når en bruker bytter mellom ark i en åpen arbeidsbok, vil den vise navnet på arbeidsboken og arkbrukeren har valgt.

    Private Sub myApp_SheetActivate (ByVal Sh As Object) MsgBox ActiveWorkbook.Name & "-" & Sh.Name End Sub 

Du kan definere så mange hendelser du vil definere her.

Arrangementene begynner ikke å fungere umiddelbart. Dette var det første trinnet. Siden det er en klassemodul, må vi lage et objekt for det for å få hendelser til å aktivere.

Nå trenger vi bare å starte disse hendelsene fra en normal subrutine.

Trinn 2: Lag en hendelsesstartprogram i normal modul

Nå har vi en arrangementsklasse. Vi trenger bare å lage et objekt av den klassen og initialisere det. Når vi kjører denne underrutinen, begynner alle de definerte hendelsene i hendelsesklassen å fungere.

  • Sett inn en normal modul.
  • Definer en variabel av klassen du har opprettet.
    Privat app som MyAppEvents
  • Initialiser det i en subrutine. Du kan navngi det som du vil.
    Private Sub StartEvents () Set AppE = New MyAppEvents End Sub
  • Kjør denne koden med F5 -tasten. Eventuelt kan du tilordne denne makroen til knappen på regnearket hvis du vil starte hendelsene fra regnearket.

Og det er gjort. Når du skal bytte ark, vil en meldingsboks vises med navnet på arbeidsboken og arket, så lenge koden som inneholder arbeidsboken er åpen.

Var det tøft? Jeg tror ikke det. Gi meg beskjed om hva du synes i kommentarfeltet nedenfor.

Slå VBA -applikasjonshendelser på og av

Når du kjører makroen i den vanlige modulen, vil den alltid utløses til du lukker arbeidsboken som inneholder hendelsene. Men du vil kanskje at de skal slå dem på og av etter din vilje. Det er to måter å gjøre dette på.

  • Opphev hendelsesobjektet
  • Sett EnableEvents til False

1. Nullifisere hendelsesobjektet

Angi hendelsesobjektet til Ingenting i en egen underprogram

Private Sub StopEvents () Set AppE = Nothing End Sub

Når du kjører denne koden, slutter hendelsene å fungere. Du kan sette den i en knapp på regnearket for å stoppe hendelsene. Nå vil du ha to knapper for å starte og stoppe disse spesifikke hendelsene. Det vil bare stoppe hendelser opprettet av AppE -objektet.

2. Sett EnableEvents til False

Den andre metoden er å deaktivere hendelsene. For å gjøre alle hendelser utilgjengelige setter vi EnableEvents -egenskapen til Application -klassen til Falsk.

Private Sub StopEvents () Application.EnableEvents = False End Sub

Koden ovenfor vil deaktivere alle hendelsene. Til og med standard excel -hendelser. De vil ikke fungere før du starter dem igjen. Selv om du kjører Startrutene () underprogrammet (ovenfor), vil hendelsen ikke fungere. For at alle hendelser skal fungere igjen, må du sette EnableEvents -egenskapen igjen til True.

Så hvis du vil at hendelsene skal fungere hver gang du starter hendelsene, kan du legge til denne kodelinjen i suben.

Private Sub StartEvents () Application.EnableEvents = True Set AppE = New MyAppEvents End Sub

Starter Custome Application Events hver gang arbeidsbok åpnes

Hvis du utvikler et verktøy for sluttbruker, vil du kanskje at hendelsene skal fungere automatisk. I så fall kan du sette hendelsesstarteren i arbeidsbokobjektet med hendelsen Workbook_open (), i stedet for i en vanlig modul. Dette vil gjøre hendelsesobjektet initialisert så snart du åpner arbeidsboken som inneholder hendelsene.

Så ja gutta, dette er hvordan du kan bruke applikasjonshendelsen i excel. Gi meg beskjed om dette var forklarende nok og hjalp deg med å forstå hendelser på applikasjonsnivå i Excel VBA i kommentarfeltet nedenfor. Hvis du har noe å legge til i dette, kan du skrive det ned også. Du kan stille spørsmål knyttet til denne artikkelen eller et annet Excel VBA -relatert emne i kommentarfeltet nedenfor.

Last ned arbeidsfilen nedenfor:

Hendelsene i Excel VBA | Det er syv typer hendelser i Excel. Hver hendelse avhenger i forskjellige omfang. Application Event omhandler på arbeidsboknivå. Arbeidsbok på arknivå. Arbeidsarkhendelse på områdenivå.

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 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.