Ingesloten grafiekgebeurtenissen met VBA in Excel

Het gebruik van grafiekbladgebeurtenissen (werkblad speciaal voor grafieken) is vrij eenvoudig. Maar als het gaat om het gebruik van gebeurtenissen op ingesloten grafieken, is het niet zo eenvoudig. Maar ik verzeker je dat evenementen met ingesloten grafieken niet zo moeilijk te activeren zijn. Het lijkt veel op het maken van toepassingsgebeurtenissen. Laten we dus zonder verder uitstel aan de slag gaan.

Er zijn dus twee stappen om een ​​ingesloten grafiekgebeurtenis te activeren. De eerste is het maken van een grafiekgebeurtenisklasse en het definiëren van gebeurtenissen. Ten tweede maakt u een object van die gebeurtenisklasse. Dat is het.

Stap 1: Maak een grafiekgebeurtenisklasse en definieer gebeurtenissen

  • Een klasmodule invoegen. Noem het zoals je wilt. Ik noemde het ChartClass.
  • Definieer een gebeurtenisvariabele van het type Grafiek met trefwoord WithEvents.
    Privé met evenementen CEvents als grafiek
  • 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 CEvents = ActiveSheet.ChartObjects(1).Chart End Sub 

    Hier initialiseren we de CEvents-kaart met de eerste kaart die op dat blad is gemaakt. De 1 is het indexnummer van grafiekobjecten op het actieve werkblad.

  • Definieer nu de gebeurtenissen die u wilt gebruiken. Selecteer in de vervolgkeuzelijst linksboven het CEvent-object. 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.
    Om het gebruik te demonstreren, kies ik de CEvents_Activate Event. Ik zal proberen de gebruiker te laten zien dat de grafiekgebeurtenis is geactiveerd in een msg-box.

    Private Sub CEvents_Activate() MsgBox "De kaartgebeurtenissen werken" End Sub 

Ons werk hier zit erop. U kunt hier zoveel evenementen maken uit de beschikbare evenementen voor het grafiektype. Maar de evenementen werken nog niet omdat het maar een les is. We moeten het object van deze klasse in een sub maken in een normale module of de objectmodule. Voer dan die sub uit. Daarna gaat ons evenement werken.

Stap 2: Maak het grafiekklasse-object in module.

  • Plaats een normale module.
  • Declareer een variabele van de klasse die je eerder hebt gemaakt.
    Dim mychart als ChartClass
  • Maak een sub en initialiseer de variabele met het object van klasse ChartClass.
    Sub activeChartEvent() Stel mychart = New ChartClass End Sub

  • Voer deze sub uit met F5. Terwijl u deze code uitvoert, zijn grafiekgebeurtenissen actief voor de eerste grafiek op het momenteel actieve blad, aangezien we deze regel hebben gebruikt voor de initialisatie van grafiekgebeurtenis Set CEvents = ActiveSheet.ChartObjects(1).Grafiek.

En het is gedaan. Als u nu op de eerste grafiek op het momenteel actieve blad klikt, wordt het bericht weergegeven dat de grafiekgebeurtenissen werken.

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 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 Mychart= 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 mychart = New ChartClass End Sub

Elke keer dat de werkmap wordt geopend, aangepaste diagramgebeurtenissen 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 ingesloten grafiekgebeurtenis 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. Schrijf uw mening op 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.

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave