Eingebettete Diagrammereignisse mit VBA in Excel

Die Verwendung von Diagrammblattereignissen (Arbeitsblatt speziell für Diagramme) ist ziemlich einfach. Aber wenn es um die Verwendung von Ereignissen in eingebetteten Diagrammen geht, ist das nicht so einfach. Aber ich versichere Ihnen, dass Events mit eingebetteten Charts nicht so schwer zu aktivieren sind. Es ist ähnlich wie beim Erstellen von Anwendungsereignissen. Lassen Sie uns also ohne weitere Verzögerung loslegen.

Es gibt also zwei Schritte, um ein eingebettetes Diagrammereignis zu aktivieren. Zuerst wird eine Diagrammereignisklasse erstellt und Ereignisse definiert. Zweitens wird ein Objekt dieser Ereignisklasse erstellt. Das ist es.

Schritt 1: Diagrammereignisklasse erstellen und Ereignisse definieren

  • Fügen Sie ein Klassenmodul ein. Benennen Sie es wie Sie wollen. Ich habe es ChartClass genannt.
  • Definieren Sie eine Ereignisvariable vom Typ Diagramm mit dem Schlüsselwort WithEvents.
    Private WithEvents CEvents als Diagramm
  • Initialisieren Sie dieses Ereignis in der Unterroutine class_initialize().
    Wählen Sie in der Dropdown-Liste auf der linken Seite die Klasse aus. Wählen Sie anschließend in der Dropdown-Liste oben rechts die Option Initialisieren aus.

    Private Sub Class_Initialize() Set CEvents = ActiveSheet.ChartObjects(1).Chart End Sub 

    Hier initialisieren wir das CEvents-Diagramm mit dem ersten auf diesem Blatt erstellten Diagramm. Die 1 ist die Indexnummer der Diagrammobjekte auf dem aktiven Blatt.

  • Definieren Sie nun die Ereignisse, die Sie verwenden möchten. Wählen Sie in der Dropdown-Liste oben links das CEvent-Objekt aus. Alle verfügbaren Ereignisbehandlungsverfahren stehen Ihnen im Dropdown-Menü oben rechts zur Verfügung. Wählen Sie aus, was Sie benötigen, und definieren Sie, was Sie tun möchten, wenn dieses Ereignis ausgelöst wird.
    Um die Verwendung zu demonstrieren, wähle ich das CEvents_Activate Event. Ich werde versuchen, dem Benutzer zu zeigen, dass das Chart-Event in einer Msg-Box aktiviert ist.

    Private Sub CEvents_Activate() MsgBox "Die Diagrammereignisse funktionieren" End Sub 

Unsere Arbeit hier ist getan. Sie können hier aus den verfügbaren Ereignissen für den Diagrammtyp beliebig viele Ereignisse erstellen. Aber die Events werden noch nicht funktionieren, weil es nur eine Klasse ist. Wir müssen das Objekt dieser Klasse in einem Sub in einem beliebigen normalen Modul oder dem Objektmodul erstellen. Dann führe das Sub aus. Danach beginnt unsere Veranstaltung zu arbeiten.

Schritt 2: Erstellen Sie das Diagrammklassenobjekt im Modul.

  • Fügen Sie ein normales Modul ein.
  • Deklarieren Sie eine Variable der Klasse, die Sie zuvor erstellt haben.
    Dim mychart als ChartClass
  • Erstellen Sie ein Sub und initialisieren Sie die Variable mit dem Objekt der Klasse ChartClass.
    Sub activateChartEvent() Set mychart = New ChartClass End Sub

  • Führen Sie dieses Unter mit F5 aus. Wenn Sie diesen Code ausführen, sind Diagrammereignisse für das erste Diagramm auf dem derzeit aktiven Blatt aktiv, da wir diese Zeile für die Initialisierung des Diagrammereignisses Set . verwendet haben CEvents = ActiveSheet.ChartObjects(1).Chart.

Und es ist vollbracht. Wenn Sie nun auf das erste Diagramm auf dem derzeit aktiven Blatt klicken, wird die Meldung angezeigt, dass die Diagrammereignisse funktionieren.

Ein- und Ausschalten von VBA-Anwendungsereignissen

Sobald Sie das Makro im normalen Modul ausführen, wird es immer ausgelöst, bis Sie die Arbeitsmappe schließen, die die Ereignisse enthält. Sie können sie jedoch nach Belieben ein- und ausschalten. Dazu gibt es zwei Möglichkeiten.

  • Annullieren des Ereignisobjekts
  • Setzen Sie EnableEvents auf False

1. Annullieren des Ereignisobjekts

Setzen Sie in einem separaten Unterprogramm das Ereignisobjekt auf Nothing

Private Sub StopEvents() Set Mychart= Nothing End Sub

Sobald Sie diesen Code ausführen, funktionieren die Ereignisse nicht mehr. Sie können es in eine Schaltfläche auf dem Arbeitsblatt einfügen, um die Ereignisse zu stoppen. Jetzt haben Sie zwei Schaltflächen, um diese spezifischen Ereignisse zu starten und zu stoppen. Es stoppt nur Ereignisse, die vom AppE-Objekt erstellt wurden.

2. Setzen Sie EnableEvents auf False

Die zweite Methode besteht darin, die Ereignisse zu deaktivieren. Um alle Ereignisse unauffindbar zu machen, setzen wir die EnableEvents-Eigenschaft der Application-Klasse aufFalsch.

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

Der obige Code deaktiviert alle Ereignisse. Sogar die Standard-Excel-Ereignisse. Sie funktionieren nicht, bis Sie sie erneut starten. Selbst wenn Sie die Unterroutine StartEvents() (oben) ausführen, wird das Ereignis nicht funktionieren. Damit alle Ereignisse wieder funktionieren, müssen Sie die Eigenschaft EnableEvents erneut auf True setzen.

Wenn Sie also möchten, dass Ihre Ereignisse jedes Mal funktionieren, wenn Sie die Ereignisse starten, fügen Sie diese Codezeile in das Unterverzeichnis ein.

Private Sub StartEvents() Application.EnableEvents = True Set mychart = New ChartClass End Sub

Starten von benutzerdefinierten Diagrammereignissen jedes Mal, wenn die Arbeitsmappe geöffnet wird

Wenn Sie ein Tool für Endbenutzer entwickeln, möchten Sie möglicherweise, dass die Ereignisse automatisch funktionieren. In diesem Fall können Sie den Ereignisstarter mit dem Ereignis Workbook_open() in das Workbook-Objekt einfügen, anstatt in ein normales Modul. Dadurch wird Ihr Ereignisobjekt initialisiert, sobald Sie die Arbeitsmappe öffnen, die die Ereignisse enthält.

Also ja, Leute, so können Sie das eingebettete Diagrammereignis in Excel verwenden. Lassen Sie mich wissen, ob dies erklärend genug war und Ihnen geholfen hat, Ereignisse auf Anwendungsebene in Excel VBA zu verstehen. Schreiben Sie Ihre Gedanken in den Kommentarbereich unten. Wenn Sie dem noch etwas hinzufügen möchten, schreiben Sie es auch auf. Sie können Ihre Fragen zu diesem Artikel oder einem anderen Thema zu Excel VBA im Kommentarbereich unten stellen.

Laden Sie die folgende Arbeitsdatei herunter:

Die Ereignisse in Excel VBA |Es gibt sieben Arten von Ereignissen in Excel. Jede Veranstaltung befasst sich in einem anderen Umfang. Application Event behandelt auf Arbeitsmappenebene. Arbeitsmappe auf Blattebene. Arbeitsblattereignis auf Bereichsebene.

Die Arbeitsblattereignisse in Excel VBA|Das Arbeitsblattereignis ist sehr nützlich, wenn Sie möchten, dass Ihre Makros ausgeführt werden, wenn ein bestimmtes Ereignis auf dem Blatt auftritt.

Arbeitsmappenereignisse mit VBA in Microsoft Excel | Die Arbeitsmappenereignisse wirken sich auf die gesamte Arbeitsmappe aus. Da alle Blätter Teil der Arbeitsmappe sind, funktionieren diese Ereignisse auch auf ihnen.

Verhindern, dass ein automatisches Makro/Ereignismakro mit VBA in Microsoft Excel ausgeführt wird| Um die Ausführung des Makros auto_open zu verhindern, verwenden Sie die Umschalttaste.

Diagrammobjektereignisse mit VBA in Microsoft Excel| Die Diagramme sind komplexe Objekte und es gibt mehrere Komponenten, die Sie an sie angehängt haben. Um die Chart-Events zu erstellen, verwenden wir das Class-Modul.

Populäre Artikel:

50 Excel-Kurzbefehle zur Steigerung Ihrer Produktivität | Werden Sie schneller bei Ihrer Aufgabe. Diese 50 Tastenkombinationen machen Ihre Arbeit in Excel noch schneller.

Die SVERWEIS-Funktion in Excel | Dies ist eine der am häufigsten verwendeten und beliebtesten Funktionen von Excel, die verwendet wird, um Werte aus verschiedenen Bereichen und Blättern zu suchen.

ZÄHLENWENN in Excel 2016 | Zählen Sie Werte mit Bedingungen mit dieser erstaunlichen Funktion. Sie müssen Ihre Daten nicht filtern, um einen bestimmten Wert zu zählen. Die Countif-Funktion ist unerlässlich, um Ihr Dashboard vorzubereiten.

So verwenden Sie die SUMIF-Funktion in Excel | Dies ist eine weitere wesentliche Funktion des Dashboards. Dies hilft Ihnen, Werte unter bestimmten Bedingungen zusammenzufassen.

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave