Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Exit Ereignis

Betrifft: Exit Ereignis von: Sebastian
Geschrieben am: 05.11.2007 11:42:02

Hallo liebe Experten!

Ich habe folgendes Problem bezüglich des Exit-Ereignisses:

Ich habe eine Eingabemaske für eine Excel-Datenbank programmiert. In der Datenbank befinden sich mehrere nummerierte Objekte. Mittels meiner Eingabemaske werden neue Einträge hinzugefügt. Um doppelte Eingaben zu verhindern, wird bei der Eingabe der Objektnummer geprüft, ob das Objekt bereits in der Datenbank vorhanden ist. Folgende Routine wird verwendet:

Private Sub TxtObjektnummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Me.TxtObjektnummer.Value <> "" Then
If DurchsucheObjektNummer(Me.TxtObjektnummer.Value) = True Then
MsgBox ("Objekt ist bereits in der Datenbank vorhanden")
Me.TxtObjektnummer.Value = ""
Me.TxtObjektnummer.SetFocus
Else
End If
End If
End Sub



Ich bin bisher davon ausgegangen, dass das Exit Ereignis ausschließlich bei Verlassen des entsprechenden Steuerelements ausgelöst wird. Wenn ich allerdings meine Prozedur zum Auslesen der Werte in meine Datenbank per Button aktiviere, wird nach dem Befehl Unload Me nochmal das Exit-Ereignis gestartet. Somit findet er den frisch eingetragenen Wert in der Datenbank und zeigt mir die MsgBox "Objekt ist bereits in der Datenbank vorhanden" erneut an.

Was kann ich tun? Kennt jemand dieses Problem? Wäre wirklich äußerst dankbat für Tipps oder Ratschläge. Mit dem Befehl Application.EnableEvents = False habe ich es auch schon versucht, leider vergeblich.

  

Betrifft: AW: Exit Ereignis von: Oberschlumpf
Geschrieben am: 05.11.2007 11:55:00

Hi Sebastian

Application.EnableEvents verhindert nur Ereignisse direkt in der Tabelle. Auf Ereignisse in einem Userform hat Application.EnableEvents keine Auswirkung.

Versuch es so (ungetestet):

1. Schreib in die erste Zeile (d)eines allgemeinen Moduls das hier

Public pboExitNotOk As Boolean


2. Schreib ins Terminate-Ereignis deines UFs das hier

pboExitNotOk = True


3. Schreib ins Exit-Ereignis jeder Textbox das hier in die erste!! Zeile

If pboExitNotOk = True Then Exit Sub


Wenn nun beim Schließen des Userforms zuerst das Terminate-Ereignis abgefragt wird, dann wird die Variable pboExitNotOk auf True gesetzt.
Und wenn im 2. Schritt das Exit-Ereignis abgefragt wird, erfolgt keine Makroabarbeitung, da durch pboExitNotOk = True das Exit-Ereignis gleich wieder verlassen wird.

Hilft das?

Ciao
Thorsten


  

Betrifft: AW: Exit Ereignis von: Sebastian
Geschrieben am: 05.11.2007 12:13:32

Danke für die schnelle Antwort. So wie du es beschrieben hast, klappt es auch.

Tausend Dank und beste Grüße!








 

Beiträge aus den Excel-Beispielen zum Thema "Exit Ereignis"