Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1572to1576
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

doppelte Ausführung von textbox_exit Prozedur

doppelte Ausführung von textbox_exit Prozedur
02.08.2017 14:58:51
textbox_exit
Liebes Forum,
nach langer Zeit darf ich mich mal wieder mit VBA beschäftigen und krame mein altes Wissen zusammen - auch mit Hilfe dieses tollen Forums :-)
Leider komme ich an einer Stelle z.Zt. auch nach intensiver Recherche nicht weiter.
Ich habe in einer Userform eine Textbox erstellt. Diese soll die Beschränkung auf eine Eingabe im Datumsformat dd.mm.yyyy erhalten (von irgendwelchen Konvertierungen wilder Nutzereingaben sehe ich mal ab, das sollen die einfach richtig eintragen nach Aufforderung). Zur Prüfung habe ich eine textbox_exit Prozedur eingefügt. Diese läuft auch soweit ganz gut, außer dass bei Fehleingabe die Message Box immer zweimal erscheint. Mit cancel=false könnte ich das zwar verhindern, aber dann ist der Fokus nicht mehr auf der Textbox und es kann munter weiter falsch eingegeben werden.
Kann mir irgendjemand einen Hinweis geben, was ich ändern sollte? Gibt es eine geeignetere Prozedur als _exit?
Hier ist der Code

'Prüfung Format Projektbeginn
Private Sub BeginnTextBox_Exit(ByVal cancel As MSForms.ReturnBoolean)
Dim antwort3 As Integer
If BeginnTextBox.Text = "" Then
Exit Sub
End If
If Not IsDate(BeginnTextBox.Text) Or _
InStr(BeginnTextBox.Text, ":") Or _
BeginnTextBox.TextLength  10 Then
cancel = True
antwort3 = MsgBox("Projektbeginn bitte im" & vbNewLine & "Format TT.MM.JJJJ angeben.",  _
vbOKCancel)
If antwort3 = vbOK Then
BeginnTextBox.SetFocus
BeginnTextBox.SelStart = 0
BeginnTextBox.SelLength = BeginnTextBox.TextLength
Else
BeginnTextBox.Text = ""
End If
'Cancel = False
End If
End Sub

Vielen Dank vorab!

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: doppelte Ausführung von textbox_exit Prozedur
02.08.2017 15:45:20
textbox_exit
Hi Dorothee
Der Beispiel-Code ist m.E. korrekt und funktioniert im Test unter XL2007.
Cancel=False am Ende vom Code muss natürlich auskommentiert (resp. gelöscht) sein.
Ansonsten bitte um eine Beispieldatei.
cu
Chris
AW: doppelte Ausführung von textbox_exit Prozedur
02.08.2017 16:05:40
textbox_exit
Hallo Chris,
ja, grundsätzlich funktioniert der Code so, aber die Textbox wird dann nicht markiert und der Nutzer kann an anderer Stelle einfach weiter machen, obwohl die Eingaben falsch sind. Wenn ich cancel=false nicht auskommentiere, wird zwar die Textbox so lange markiert bis die Eingabe stimmt bzw. sie leer ist, dafür erscheint die Messagebox aber zweimal hintereinander.
Hm, drücke ich mich verständlich aus?
Anzeige
AW: doppelte Ausführung von textbox_exit Prozedur
02.08.2017 16:22:51
textbox_exit
Hallo
hier mal ein Beispiel, mit dem ich meine Kunden beglücke, wenn es darum geht, in 1e Textbox ein Datumswert einzugeben. Hier überlasse ich nichts dem Zufall und blende ein Kalenderformular ein, aus dem 1 Datum ausgewählt werden muß.
https://www.herber.de/bbs/user/115176.xlsm
Gruß von Luschi
aus klein-Paris
AW: doppelte Ausführung von textbox_exit Prozedur
03.08.2017 11:50:12
textbox_exit
Wow, das ist toll :-) Ganz lieben Dank, Luschi!
Ich muss mal schauen, ob ich das einbauen kann, ist ja doch ziemlich komplex.
Hat vielleicht noch jemand eine Idee, wie die exit-Prozedur daran gehindert werden kann, zweimal durchlaufen zu werden? Es scheint ja so, als würde durch einmal Klick auf OK das Textfeld nochmal aktiviert und erneut geprüft.
Anzeige
AW: doppelte Ausführung von textbox_exit Prozedur
03.08.2017 12:43:58
textbox_exit
Hallo,
Du meinst wahrscheinlich das zweite Erscheinen der Box bei Schließen der Form, das könntest Du so verhindern:
Option Explicit
Private mblnQueryClose As Boolean
'Prüfung Format Projektbeginn
Private Sub BeginnTextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim antwort3 As Integer
If Not mblnQueryClose Then
If BeginnTextBox.Text = "" Then
Exit Sub
End If
If Not IsDate(BeginnTextBox.Text) Or _
InStr(BeginnTextBox.Text, ":") Or _
BeginnTextBox.TextLength  10 Then
Cancel = True
antwort3 = MsgBox("Projektbeginn bitte im" & vbNewLine & "Format TT.MM.JJJJ angeben.",  _
_
vbOKCancel)
If antwort3 = vbOK Then
BeginnTextBox.SetFocus
BeginnTextBox.SelStart = 0
BeginnTextBox.SelLength = BeginnTextBox.TextLength
Else
BeginnTextBox.Text = ""
End If
End If
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
mblnQueryClose = True
End Sub

Gruß, Mullit
Anzeige
AW: doppelte Ausführung von textbox_exit Prozedur
08.08.2017 10:21:16
textbox_exit
Hallo Mullit,
das sieht nach einer schlüssigen Lösung aus, werde ich mal ausprobieren. Vielen Dank!
Beste Grüße
Dorothee

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige