Freigeben über


Event-Anweisung

Deklariert ein benutzerdefiniertes Ereignis.

Syntax

[ Öffentlich ] Ereignisprozedurname [ (arglist) ]

Die Event-Anweisung besteht aus folgenden Komponenten:

Bestandteil Beschreibung
Public Optional. Gibt an, dass das Ereignis im gesamten Projekt sichtbar ist. Events-Typen sind standardmäßig sichtbar (Public). Beachten Sie, dass die Ereignisse nur in dem Modul ausgelöst werden können, in dem sie deklariert sind.
procedurename Erforderlich. Name des Ereignisses; folgt den Standardbenennungskonventionen für Variablen.

Das arglist-Argument weist die folgende Syntax und folgende Teile auf:

[ ByVal | ByRef ] varname [ ( ) ] [ Astype ]

Bestandteil Beschreibung
ByVal Optional. Gibt an, dass das Argumentdem Wert nach (by value) übergeben wird.
ByRef Optional. Gibt an, dass das Argument nach Verweis übergeben wird. ByRef ist die Standardeinstellung in VBA im Gegensatz zu Visual Basic .NET.
varname Erforderlich. Name der Variablen, die das Argument darstellt, das an die Prozedur übergeben wird; folgt den Standardbenennungskonventionen für Variablen.
type Optional. Datentyp des Arguments, das an die Prozedur übergeben wird; kann Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (derzeit nicht unterstützt), Date, String (nur variable Länge), Object, Variant, ein benutzerdefinierter Typ oder ein Objekttyp sein.

Hinweise

Nachdem das Ereignis deklariert wurde, verwenden Sie die RaiseEvent-Anweisung , um das Ereignis auszulösen. Ein Syntaxfehler tritt auf, wenn eine Event-Deklaration in einem Standardmodul erscheint. Ein Ereignis kann nicht für die Rückgabe eines Werts deklariert werden. Ein typisches Ereignis kann deklariert und ausgelöst werden, wie in den folgenden Fragmenten gezeigt.

' Declare an event at module level of a class module 
 
Event LogonCompleted (UserName as String) 
 
Sub 
 RaiseEvent LogonCompleted("AntoineJan") 
End Sub

Hinweis

[!HINWEIS] Sie können Ereignisargumente genauso wie Argumente von Prozeduren deklarieren, jedoch mit folgenden Ausnahmen: Ereignisse können nicht über benannte Argumente, Optional -Argumente oder ParamArray -Argumente verfügen. Ereignisse weisen keine Rückgabewerte auf.

Beispiel

Im folgenden Beispiel werden Ereignisse verwendet, um Sekunden während einer Demonstration des schnellsten 100-Meter-Rennens zu zählen. Im Code sind alle ereignisbezogenen Methoden, Eigenschaften und Anweisungen dargestellt, einschließlich der Event -Anweisung.

Die Klasse, die ein Ereignis auslöst, ist die Ereignisquelle, und die Klassen, die das Ereignis implementieren, sind die Senken. Eine Ereignisquelle kann mehrere Senken für die Ereignisse enthalten, die sie generiert. Wenn die Klasse das Ereignis aufruft, wird dieses Ereignis für jede Klasse ausgelöst, die bestimmt hat, Ereignisse für diese Instanz des Objekts aufzufangen.

Im Beispiel wird auch ein Formular (Form1) mit einer Schaltfläche (Command1), einer Bezeichnung (Label1) und zwei Textfeldern (Text1 und Text2) verwendet. Wenn Sie auf die Schaltfläche klicken, wird im ersten Textfeld "Ab jetzt" angezeigt und im zweiten werden die Sekunden gezählt. Wenn die vollständige Zeit (9,84 Sekunden) abgelaufen ist, wird im ersten Textfeld "Bis jetzt" und im zweiten Feld "9,84" angezeigt.

Der Code gibt den Anfangs- und Endzustand des Formulars an. Er enthält zudem den Code, der ausgeführt wird, wenn Ereignisse aufgerufen werden.

Option Explicit 
 
Private WithEvents mText As TimerState 
 
Private Sub Command1_Click() 
 Text1.Text = "From Now" 
 Text1.Refresh 
 Text2.Text = "0" 
 Text2.Refresh 
Call mText.TimerTask(9.84) 
End Sub 
 
Private Sub Form_Load() 
 Command1.Caption = "Click to Start Timer" 
 Text1.Text = "" 
 Text2.Text = "" 
 Label1.Caption = "The fastest 100 meter run took this long:" 
 Set mText = New TimerState 
 End Sub 
 
Private Sub mText_ChangeText() 
 Text1.Text = "Until Now" 
 Text2.Text = "9.84" 
End Sub 
 
Private Sub mText_UpdateTime(ByVal dblJump As Double) 
 Text2.Text = Str(Format(dblJump, "0")) 
 DoEvents 
End Sub

Der restliche Code befindet sich in einem Klassenmodul mit dem Namen "TimerState". Mit den Event -Anweisungen werden die Prozeduren deklariert, die beim Auslösen von Ereignissen initiiert werden.

Option Explicit 
Public Event UpdateTime(ByVal dblJump As Double)
Public Event ChangeText() 
 
Public Sub TimerTask(ByVal Duration As Double) 
 Dim dblStart As Double 
 Dim dblSecond As Double 
 Dim dblSoFar As Double 
 dblStart = Timer 
 dblSoFar = dblStart 
 
 Do While Timer < dblStart + Duration 
 If Timer - dblSoFar >= 1 Then 
 dblSoFar = dblSoFar + 1 
 RaiseEvent UpdateTime(Timer - dblStart) 
 End If 
 Loop 
 
 RaiseEvent ChangeText 
 
End Sub

Siehe auch

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.