mit den folgenden Daten prüfe ich ob die TextBox1 das richtige Datum enthält.
'Anfang alles Textbox1
'gibt bei Wechsel Punkt nach Tag und Monat ein Begrenzung auf 10 Stellen für Datum
<pre>Private Sub TextBox1_Change()
If TextBox1 = "" = True Then Exit Sub
'Anfang Datum . Vorgabe und Begrenzung auf 10 Stellen
If TextBox1.Tag = "1" = True Then Exit Sub
If Len(TextBox1) = 2 Then
If InStr(TextBox1, ".") = 0 Then TextBox1 = TextBox1 & "."
ElseIf Len(TextBox1) = 5 Then
If Len(TextBox1) - Len(Application.Substitute(TextBox1, ".", "")) < 2 Then
TextBox1 = TextBox1 & "."
End If
End If
TextBox1.MaxLength = 10
'Ende Datum . Vorgabe und Begrenzung auf 10 Stellen
End Sub</pre>
'Function wird ausgeführt in Textbox1_BeforeUpdate
Function Check_Datum(Tb As MSForms.TextBox) As Boolean
If IsDate(Tb.Text) Then
Tb.Text = CDate(Tb.Text)
If Tb.Text Like "##.##.####" Then Exit Function
End If
MsgBox "Eingabe nicht korrekt!"
Check_Datum = True 'springt wieder ins Feld
Tb.SelStart = 0
Tb.SelLength = Len(Tb.Text)
End Function</pre>
<pre>Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = Check_Datum(TextBox1) 'True --> springt wieder ins Feld 'Check_Datum = o.a. Function
End Sub</pre>
Wenn das Datum richtig ist, ist alles o.k.. Wenn jedoch z.B. das Datum wie folgt eingegeben wird: 01..01.201 dann kommt MsgBox "Eingabe nicht korrekt" aber der Fokus wird nicht in der TextBox1 gesetzt bzw. der Text markiert.
Könnt ihr mir bitte mitteilen, wo der Fehler liegt.
Besten Dank
Gruss
Peter