Hur man skapar händelser på applikationsnivå i Excel VBA

Innehållsförteckning:

Anonim

Händelserna på applikationsnivå fungerar på hela applikationen (Excel i den här referensen). Men att aktivera applikationshändelsen är inte lika lätt som att skapa Workbook eller Worksheet Events. Men jag kan försäkra er om att det inte är så knepigt också. I den här artikeln kommer vi att lära oss hur du skapar och använder applikationshändelsen i Excel VBA i några enkla steg.

Steg 1: Skapa ett händelseobjekt i en klassmodul

För att skapa ett händelseobjekt måste vi använda klassmodulen.

  • Sätt i en klassmodul. Namnge det som du vill. Jag gav den namnet MyAppEvents.
  • Definiera en händelsevariabel för applikationstyp med sökordet WithEvents.
    Privat WithEvents myApp Som applikation
  • Initiera den här händelsen i subrutin class_initialize ().
    Välj klass på rullgardinsmenyn till vänster. Välj sedan initiera längst upp till höger.

    Private Sub Class_Initialize () Ange myApp = Application End Sub
  • Definiera nu de händelser du vill använda. Välj händelseobjektet längst upp till vänster. Alla tillgängliga händelsehanteringsprocedurer kommer att vara tillgängliga för dig i rullgardinsmenyn längst upp till höger. Välj det du behöver och definiera vad du vill göra när händelsen utlöses.
    Jag använder SheetActivate Event. När en användare växlar mellan ark i en öppen arbetsbok visar den arbetsbokens namn och bladanvändaren har valt.

    Privat sub myApp_SheetActivate (ByVal Sh som objekt) MsgBox ActiveWorkbook.Name & "-" & Sh.Name Avsluta sub 

Du kan definiera så många händelser som du vill definiera här.

Händelserna börjar inte fungera direkt. Detta var det första steget. Eftersom det är en klassmodul måste vi skapa ett objekt för att få händelser att aktiveras.

Nu behöver vi bara starta dessa händelser från en normal subrutin.

Steg 2: Skapa en händelsestarterrutin i normal modul

Nu har vi en evenemangsklass. Vi behöver bara skapa ett objekt av den klassen och initiera det. När vi väl har kört den här rutinen börjar alla definierade händelser i evenemangsklassen fungera.

  • Sätt i en normal modul.
  • Definiera en variabel av klassen du har skapat.
    Privat app som MyAppEvents
  • Initiera det i en delprogram. Du kan namnge det som du vill.
    Private Sub StartEvents () Set AppE = New MyAppEvents End Sub
  • Kör den här koden med F5 -tangenten. Alternativt kan du tilldela detta makro till knappen på kalkylbladet om du vill starta händelserna från kalkylbladet.

Och det är gjort. När du nu ska byta ark visas en meddelanderuta med namnet på arbetsboken och arket, så länge koden som innehåller arbetsboken är öppen.

Var det tufft? Jag tror inte det. Låt mig veta vad du tycker i kommentarsfältet nedan.

Slå på och av VBA -programhändelser

När du har kört makrot i den normala modulen utlöses det alltid tills du stänger arbetsboken som innehåller händelserna. Men du kanske vill att de ska slå på och av dem efter egen vilja. Det finns två sätt att göra detta.

  • Nullify Event Object
  • Ange EnableEvents till False

1. Nullifiera händelseobjektet

Ställ in händelseobjektet på ingenting i en separat underrutin

Private Sub StopEvents () Set AppE = Nothing End Sub

När du har kört den här koden slutar händelserna att fungera. Du kan sätta den i en knapp på kalkylbladet för att stoppa händelserna. Nu kommer du att ha två knappar för att starta och stoppa dessa specifika händelser. Det kommer bara att stoppa händelser som skapats av AppE -objektet.

2. Ställ EnableEvents till False

Den andra metoden är att inaktivera händelserna. För att göra alla händelser oåtkomliga ställer vi in ​​egenskapen EnableEvents i applikationsklassen till Falsk.

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

Ovanstående kod kommer att inaktivera alla händelser. Även standard excel -händelser. De fungerar inte förrän du startar dem igen. Även om du kör startrutinerna () underrutan (ovan) fungerar händelsen inte. För att alla händelser ska fungera igen måste du ställa in Egenskapen EnableEvents igen till True.

Så om du vill att dina händelser ska fungera varje gång du startar händelserna, lägg till den här kodraden i suben.

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

Starta Custome Application Events varje gång arbetsbok öppnas

Om du utvecklar ett verktyg för slutanvändare kanske du vill att händelserna ska fungera automatiskt. I så fall kan du placera eventstartaren i Workbook -objektet med Workbook_open () -händelsen istället för i en vanlig modul. Detta kommer att göra ditt händelseobjekt initialiserat så snart du öppnar arbetsboken som innehåller händelserna.

Så ja killar, så här kan du använda applikationshändelsen i excel. Låt mig veta om detta var tillräckligt förklarande och hjälpte dig att förstå programnivåhändelser i Excel VBA i kommentarfältet nedan. Om du har något att tillägga detta, skriv ner det också. Du kan ställa dina frågor relaterade till denna artikel eller något annat Excel -VBA -relaterat ämne i kommentarfältet nedan.

Ladda ner arbetsfilen nedan:

Händelserna i Excel VBA | Det finns sju typer av händelser i Excel. Varje evenemang handlar i olika omfattning. Application Event behandlar på arbetsboknivå. Arbetsbok på arknivå. Arbetsbladshändelse på intervallnivå.

Arbetsbladshändelser i Excel VBA| Arbetsbladshändelsen är verkligen användbar när du vill att dina makron ska köras när en viss händelse inträffar på arket.

Arbetsbokshändelser med VBA i Microsoft Excel | Arbetsbokhändelserna fungerar på hela arbetsboken. Eftersom alla blad är en del av arbetsboken fungerar dessa händelser också på dem.

Förhindra att en automacro/eventmacro körs med VBA i Microsoft Excel| För att förhindra körning av auto_open -makro, använd shift -tangenten.

Kartlägg objekthändelser med VBA i Microsoft Excel| Diagrammen är komplexa objekt och det finns flera komponenter som du bifogade dem. För att göra diagramhändelserna använder vi klassmodulen.

Populära artiklar:

50 Excel -genvägar för att öka din produktivitet | Bli snabbare på din uppgift. Dessa 50 genvägar gör ditt arbete ännu snabbare i Excel.

VLOOKUP -funktionen i Excel | Detta är en av de mest använda och populära Excel -funktionerna som används för att leta upp värde från olika intervall och ark.

COUNTIF i Excel 2016 | Räkna värden med förhållanden med denna fantastiska funktion. Du behöver inte filtrera dina data för att räkna specifikt värde. Countif -funktionen är avgörande för att förbereda din instrumentpanel.

Hur man använder SUMIF -funktionen i Excel | Detta är en annan viktig instrumentpanel. Detta hjälper dig att summera värden på specifika förhållanden.