So erstellen Sie Ereignisse auf Anwendungsebene in Excel VBA

Inhaltsverzeichnis:

Anonim

Die Ereignisse auf Anwendungsebene wirken sich auf die gesamte Anwendung aus (Excel in dieser Referenz). Das Aktivieren des Anwendungsereignisses ist jedoch nicht so einfach wie das Erstellen von Arbeitsmappen- oder Arbeitsblattereignissen. Aber ich versichere Ihnen, dass es auch nicht so schwierig ist. In diesem Artikel erfahren Sie, wie Sie in wenigen einfachen Schritten das Anwendungsereignis in Excel VBA erstellen und verwenden.

Schritt 1: Erstellen Sie ein Ereignisobjekt in einem Klassenmodul

Um ein Ereignisobjekt zu erstellen, müssen wir das Klassenmodul verwenden.

  • Fügen Sie ein Klassenmodul ein. Benennen Sie es wie Sie wollen. Ich habe es MyAppEvents genannt.
  • Definieren Sie eine Ereignisvariable vom Typ Application mit dem Schlüsselwort WithEvents.
    Privat WithEvents myApp als Anwendung
  • 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 myApp = Application End Sub
  • Definieren Sie nun die Ereignisse, die Sie verwenden möchten. Wählen Sie in der Dropdown-Liste oben links das Ereignisobjekt 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.
    Ich verwende das SheetActivate-Ereignis. Immer wenn ein Benutzer zwischen den Blättern einer geöffneten Arbeitsmappe wechselt, wird der Name der Arbeitsmappe und des ausgewählten Arbeitsblatts angezeigt.

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

Sie können hier beliebig viele Ereignisse definieren.

Die Ereignisse werden nicht sofort funktionieren. Dies war der erste Schritt. Da es sich um ein Klassenmodul handelt, müssen wir ein Objekt davon erstellen, damit Ereignisse aktiviert werden.

Jetzt müssen wir diese Ereignisse nur noch aus einem normalen Unterprogramm starten.

Schritt 2: Erstellen Sie eine Ereignisstarter-Subroutine im normalen Modul

Jetzt haben wir eine Event-Klasse. Wir müssen nur ein Objekt dieser Klasse erstellen und es initialisieren. Sobald wir diese Subroutine ausführen, beginnen alle definierten Ereignisse in der Ereignisklasse zu arbeiten.

  • Fügen Sie ein normales Modul ein.
  • Definieren Sie eine Variable der von Ihnen erstellten Klasse.
    Private AppE als MyAppEvents
  • Initialisieren Sie es in einem Unterprogramm. Sie können es benennen, wie Sie möchten.
    Private Sub StartEvents() Set AppE = New MyAppEvents End Sub
  • Führen Sie diesen Code mit der Taste F5 aus. Optional können Sie dieses Makro der Schaltfläche auf dem Arbeitsblatt zuweisen, wenn Sie die Ereignisse aus dem Arbeitsblatt starten möchten.

Und es ist vollbracht. Wenn Sie jetzt zwischen Arbeitsblättern wechseln, wird ein Meldungsfeld mit dem Namen der Arbeitsmappe und des Arbeitsblatts angezeigt, solange der Code mit der Arbeitsmappe geöffnet ist.

War es hart? Ich glaube nicht. Lassen Sie mich Ihre Meinung im Kommentarbereich unten wissen.

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. Aber vielleicht möchten Sie, dass sie sie 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 AppE = 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 auf Falsch.

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 AppE = New MyAppEvents End Sub

Starten von Custome-Anwendungsereignissen jedes Mal, wenn die Arbeitsmappe geöffnet wurde

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 Anwendungsereignis in Excel verwenden. Lassen Sie mich im Kommentarbereich unten wissen, ob dies erklärend genug war und Ihnen geholfen hat, Ereignisse auf Anwendungsebene in Excel VBA zu verstehen. 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.