Event, instruction
Déclare un événement défini par l’utilisateur.
Syntaxe
[ Public ] Eventprocedurename [ (arglist) ]
L’instruction Event comporte les parties suivantes :
Élément | Description |
---|---|
Public | Optional. Spécifie que l’événement est visible dans tout le projet. Par défaut, les types Events sont Public. Notez que les événements peuvent être déclenchés uniquement dans le module où ils sont déclarés. |
procedurename | Obligatoire. Nom de l’événement ; suit les conventions de nom standard des variables. |
La syntaxe et les éléments de l'argument arglist sont les suivants :
[ ByVal | ByRef ] varname [ ( ) ] [ Astype ]
Élément | Description |
---|---|
ByVal | Optional. Indique que l’argument est transmis par valeur. |
ByRef | Optional. Indique que l’argument est transféré par référence. ByRef est la valeur par défaut dans VBA, contrairement à Visual Basic .NET. |
varname | Obligatoire. Nom de la variable représentant l’argument transmis à la procédure ; respecte les conventions de nom standard des variables. |
type | Optional. Type de données de l’argument transmis à la procédure ; peut prendre les valeurs Byte (octet), Boolean (booléen), Integer (entier), Long, Currency (devise), Single (simple), Double (double), Decimal (décimal, actuellement non pris en charge), Date, String (chaîne, longueur variable uniquement), Object (objet), Variant (variant), un type défini par l’utilisateur ou un type d’objet. |
Remarques
Une fois l’événement déclaré, utilisez l’instruction RaiseEvent pour déclencher l’événement. Une erreur de syntaxe se produit s’il existe une déclaration Event dans un module standard. Il n’est pas possible de déclarer un événement pour qu’il renvoie une valeur. Un événement classique peut être déclaré et déclenché comme indiqué dans les fragments suivants.
' Declare an event at module level of a class module
Event LogonCompleted (UserName as String)
Sub
RaiseEvent LogonCompleted("AntoineJan")
End Sub
Remarque
Vous pouvez déclarer les arguments des événements comme pour les arguments de procédure, à ces quelques exceptions près : les événements ne peuvent pas contenir d’arguments nommés, d’arguments Optional ou d’arguments ParamArray. Les événements n’ont pas de valeurs de retour.
Exemple
L’exemple suivant utilise des événements pour compter les secondes pendant une démonstration de la course de 100 mètres la plus rapide. Le code illustre toutes les méthodes, propriétés et instructions liées à l’événement, notamment l’instruction Event.
La classe qui déclenche un événement est la source de l’événement et les classes qui implémentent l’événement sont les récepteurs. Une source d’événement peut avoir plusieurs récepteurs pour les événements qu’elle génère. Lorsque la classe déclenche l’événement, ce dernier se déclenche sur chaque classe qui a été élue en tant que récepteur d’événements pour cette instance de l’objet.
L’exemple utilise également un formulaire (Form1
) avec un bouton (Command1
), une étiquette (Label1
) et deux zones de texte (Text1
et Text2
). Lorsque vous cliquez sur le bouton, la première zone de texte affiche « À partir de maintenant » et la deuxième commence à compter les secondes. Lorsque le temps plein (9,84 secondes) s’est écoulé, la première zone de texte affiche « Jusqu’à présent » et la seconde affiche « 9,84 ».
Le code spécifie les états initial et terminal du formulaire. Il contient également le code exécuté lors du déclenchement des événements.
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
Le code restant est dans un module de classe nommé TimerState. Les instructions Event déclarent les procédures lancées au déclenchement des événements.
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
Voir aussi
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.