Rekursiven Aufruf von Ereignissen verhindern
Ereignissen
Hallo, liebe Forumsmitglieder,
ich habe eine Frage zum Ausschalten der Ereignisbehandlung (Application.EnableEvents=False).
Auf einer Userform befindet sich eine Textbox , die Eingaben entgegennimmt. Ich verwende das Change-Ereignis, um fehlerhafte Eingaben zu korrigieren.
Wenn ich in der Change-Ereignisprozedur den Wert der Textbox ändere (korrigiere), wird das Ereignis erneut augerufen (Rekursion) - dies will ich mit "Application.EnableEvents=False" verhindern.
Im folgenden Beispiel soll bei Eingabe eines Punktes dieser durch einen Strich ausgetauscht werden - dies funktioniert auch, aber das Change-Ereignis wird rekursiv aufgerufen, obwohl ein "Application.EnableEvents=False" gegeben wurde. Man sieht das im Einzelschrittmodus.
Warum funktioniert das Ausschalten der Ereignisbehandlung hier nicht? Dies trifft auch für die anderen Ereignisse (KeyUP, KeyDown etc.) zu.
Dass die Ereignisroutine nach Abschalten der Ereignisbehandlung dennoch erneut aufgerufen wird, ist doch eigentlich "gegen die guten Sitten" - ich versteh's nicht.
Kann mir jemand erklären, was ich hier falsch mache?
Private Sub TextBox1_Change()
If Right(Me.TextBox1, 1) = "." Then
Application.EnableEvents = False
Me.TextBox1 = Left(Me.TextBox1, Len(Me.TextBox1) - 1) & "-"
Application.EnableEvents = True
End If
End Sub
Danke für Eure Hilfe
und freundliche Grüße
Joachim