Gebeurtenissen op toepassingsniveau maken in Excel VBA

Inhoudsopgave:

Anonim

De gebeurtenissen op toepassingsniveau werken op de hele toepassing (Excel in deze referentie). Maar het activeren van de toepassingsgebeurtenis is niet zo eenvoudig als het maken van werkmap- of werkbladgebeurtenissen. Maar ik verzeker je dat het ook niet zo lastig is. In dit artikel leren we in een paar eenvoudige stappen hoe u de toepassingsgebeurtenis in Excel VBA kunt maken en gebruiken.

Stap 1: Maak een gebeurtenisobject in een klassenmodule

Om een ​​gebeurtenisobject te maken, moeten we de klassenmodule gebruiken.

  • Een klasmodule invoegen. Noem het zoals je wilt. Ik noemde het MyAppEvents.
  • Definieer een gebeurtenisvariabele van het toepassingstype met het trefwoord WithEvents.
    Privé Met Evenementen myApp Als Applicatie
  • Initialiseer deze gebeurtenis in de subroutine class_initialize().
    Selecteer klas in de vervolgkeuzelijst aan de linkerkant. Selecteer daarna in de vervolgkeuzelijst rechtsboven initialiseren.

    Private Sub Class_Initialize() Set myApp = Application End Sub
  • Definieer nu de gebeurtenissen die u wilt gebruiken. Selecteer in de vervolgkeuzelijst linksboven het gebeurtenisobject. Alle beschikbare procedures voor het afhandelen van gebeurtenissen zijn voor u beschikbaar in het vervolgkeuzemenu rechtsboven. Selecteer wat u nodig heeft en definieer wat u wilt doen wanneer die gebeurtenis wordt geactiveerd.
    Ik gebruik de SheetActivate Event. Telkens wanneer een gebruiker tussen bladen van een geopende werkmap schakelt, wordt de naam van de werkmap weergegeven die de bladgebruiker heeft geselecteerd.

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

U kunt hier zoveel evenementen definiëren als u wilt.

De evenementen zullen niet meteen beginnen te werken. Dit was de eerste stap. Omdat het een klassenmodule is, moeten we er een object van maken om gebeurtenissen te activeren.

Nu hoeven we deze gebeurtenissen alleen nog maar vanuit een normale subroutine te starten.

Stap 2: Maak een Event Starter-subroutine in de normale module

Nu hebben we een evenementenklas. We hoeven alleen maar een object van die klasse te maken en het te initialiseren. Zodra we deze subroutine hebben uitgevoerd, zullen alle gedefinieerde gebeurtenissen in de gebeurtenisklasse beginnen te werken.

  • Plaats een normale module.
  • Definieer een variabele van de klasse die u hebt gemaakt.
    Private AppE als MyAppEvents
  • Initialiseer het in een subroutine. Je kunt het een naam geven zoals je wilt.
    Private Sub StartEvents() Set AppE = New MyAppEvents End Sub
  • Voer deze code uit met de F5-toets. Optioneel kunt u deze macro toewijzen aan de knop op het werkblad als u de gebeurtenissen vanuit het werkblad wilt starten.

En het is gedaan. Wanneer u nu van blad wisselt, verschijnt er een berichtvenster met de naam van de werkmap en het blad, zolang de code met de werkmap open is.

Was het zwaar? Ik denk het niet. Laat me weten wat je ervan vindt in de commentaarsectie hieronder.

VBA-toepassingsgebeurtenissen in- en uitschakelen

Zodra u de macro in de normale module uitvoert, wordt deze altijd geactiveerd totdat u de werkmap sluit die de gebeurtenissen bevat. Maar misschien wilt u dat ze ze naar believen in- en uitschakelen. Er zijn twee manieren om dit te doen.

  • Het gebeurtenisobject ongeldig maken
  • Zet EnableEvents op False

1. Het gebeurtenisobject ongeldig maken

Stel in een aparte subroutine het gebeurtenisobject in op Niets

Private Sub StopEvents() Set AppE = Nothing End Sub

Zodra u deze code uitvoert, werken de gebeurtenissen niet meer. Je kunt het in een knop op het werkblad plaatsen om de gebeurtenissen te stoppen. Nu heb je twee knoppen om deze specifieke gebeurtenissen te starten en te stoppen. Het stopt alleen gebeurtenissen die door het AppE-object zijn gemaakt.

2. Stel EnableEvents in op False

De tweede methode is om de gebeurtenissen uit te schakelen. Om alle gebeurtenissen onvindbaar te maken, stellen we de eigenschap EnableEvents van de klasse Application in op: vals.

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

De bovenstaande code schakelt alle gebeurtenissen uit. Zelfs de standaard Excel-gebeurtenissen. Ze werken pas als je ze opnieuw start. Zelfs als u de subroutine StartEvents() uitvoert (hierboven), zal de gebeurtenis niet werken. Om alle gebeurtenissen weer te laten werken, moet u de eigenschap EnableEvents opnieuw instellen op True.

Dus als je wilt dat je evenementen werken elke keer dat je de evenementen start, voeg dan deze regel code toe aan de sub.

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

Elke keer dat de werkmap wordt geopend, aangepaste toepassingsgebeurtenissen starten

Als u een tool voor eindgebruikers ontwikkelt, wilt u misschien dat de gebeurtenissen automatisch werken. In dat geval kunt u de gebeurtenisstarter in het Workbook-object plaatsen met de gebeurtenis Workbook_open() in plaats van in een normale module. Hierdoor wordt uw gebeurtenisobject geïnitialiseerd zodra u de werkmap opent die de gebeurtenissen bevat.

Dus ja jongens, dit is hoe je de toepassingsgebeurtenis in Excel kunt gebruiken. Laat me weten of dit voldoende verhelderend was en u heeft geholpen bij het begrijpen van gebeurtenissen op toepassingsniveau in Excel VBA in de opmerkingen hieronder. Als je hier iets aan toe te voegen hebt, schrijf dat dan ook op. U kunt uw vragen met betrekking tot dit artikel of een ander Excel VBA-gerelateerd onderwerp stellen in de opmerkingen hieronder.

Download hieronder het werkbestand:

De gebeurtenissen in Excel VBA | Er zijn zeven soorten gebeurtenissen in Excel. Elk evenement behandelt in verschillende reikwijdte. Application Event behandelt op werkmapniveau. Werkmap op bladenniveau. Werkblad Gebeurtenis op bereikniveau.

De werkbladgebeurtenissen in Excel VBA|De werkbladgebeurtenis is erg handig als u wilt dat uw macro's worden uitgevoerd wanneer een opgegeven gebeurtenis op het werkblad plaatsvindt.

Werkmapgebeurtenissen met VBA in Microsoft Excel | De werkmapgebeurtenissen werken op de hele werkmap. Omdat alle bladen deel uitmaken van de werkmap, werken deze gebeurtenissen ook op hen.

Voorkom dat een automacro/eventmacro wordt uitgevoerd met VBA in Microsoft Excel| Gebruik de shift-toets om het uitvoeren van de macro auto_open te voorkomen.

Objectgebeurtenissen in kaart brengen met VBA in Microsoft Excel| De grafieken zijn complexe objecten en er zijn verschillende componenten die u eraan hebt gekoppeld. Om de Chart Events te maken gebruiken we de Class module.

Populaire artikels:

50 Excel-snelkoppelingen om uw productiviteit te verhogen | Word sneller in uw taak. Met deze 50 sneltoetsen werkt u nog sneller in Excel.

De VERT.ZOEKEN-functie in Excel | Dit is een van de meest gebruikte en populaire functies van Excel die wordt gebruikt om waarde op te zoeken uit verschillende bereiken en bladen.

AANTAL.ALS in Excel 2016 | Tel waarden met voorwaarden met behulp van deze geweldige functie. U hoeft uw gegevens niet te filteren om een ​​specifieke waarde te tellen. Countif-functie is essentieel om uw dashboard voor te bereiden.

Hoe de SUMIF-functie in Excel te gebruiken? | Dit is een andere essentiële functie van het dashboard. Dit helpt u bij het optellen van waarden voor specifieke voorwaarden.