AW: erledigt
10.02.2020 08:25:14
Peter
Hallo Hajo,
ich habe von Dir ein anderes Beispiel im Archiv gefunden und entsprechend abgeändert.
Option Explicit
Dim BoEnter As Boolean
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' erstellt von Hajo.ziplies@web.de Stand 01.08.03
' Datumseingabe 01.01.2003;1.1.2003 oder komlettes Jahr
' Eingabe des Tages und des Monat zweistellig werden die Punkte automatisch gesetzt
' sie können nur gelöscht durch markierung des punktes und der Zahl davor
' Buchstaben werden ausgeschlossen, nur Zahlen und Punkt
' die Überprüfung ob Datum erfolgt in Private Sub TextBox1_AfterUpdate()
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc(".")
If Len(TextBox1) = 0 Then
KeyAscii = 0
Else
'' If Len(TextBox1) - Len(Application.Substitute(TextBox1, ".", "")) = 2 Then
If Len(TextBox1) - Len(Application.Substitute(TextBox1, ".", "")) = 4 Then
KeyAscii = 0
ElseIf Len(TextBox1) > 1 Then
If Mid(TextBox1, Len(TextBox1), 1) = "." Then KeyAscii = 0
Else
KeyAscii = Asc(".")
End If
End If
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub TextBox1_Change()
If BoEnter = True Then Exit Sub
If Len(TextBox1) = 2 Then
If InStr(TextBox1, ".") = 0 And BoEnter = False Then TextBox1 = TextBox1 & "."
ElseIf Len(TextBox1) = 5 Then
If Len(TextBox1) - Len(Application.Substitute(TextBox1, ".", "")) TextBox1 Then
If Format(CDate(TextBox1.Value), "dd.mm.yyyy") TextBox1 Then
' MsgBox "Das Datum wurde übersetzt"
Label32.Caption = "Das Datum wurde auf das aktuelle Jahr ergänzt" _
& vbLf & "bitte Vorgang eingeben!" _
& vbLf & vbLf & "Falls ein anderes Jahr benötigt wird - z. B. das Vorjahr bitte ä _
ndern!"
End If
'' TextBox1 = Format(CDate(TextBox1.Value), "dd.mm.yy")
TextBox1 = Format(CDate(TextBox1.Value), "dd.mm.yyyy")
Label32.Caption = "gültiges Datum - bitte Vorgang eingeben!"
Else
TextBox1 = ""
End If
BoEnter = False
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Value = "" Then
Label32.Caption = "bitte Datum eingeben!!!"
Cancel = True
End If
End Sub
Es funktioniert genau so, wie ich das möchte.
Nur eine Bitte hätte ich gerne noch. Durch "Cancel = True" wird der Focus aus die TextBox1 gesetzt.
Wenn ich jetzt an dieser Stelle abbrechen möchte ist dies nicht möglich, das das Ausfüllen der TextBox1 erwartet wird. Wie kann ich erreichen, dass dies durch einen Button möglich ist.
Gruss
Peter