Textfeld in Formular als Datum

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
TextBox MsgBox
Bild

Betrifft: Textfeld in Formular als Datum von: Karl
Geschrieben am: 24.03.2005 13:18:55

Hallo Profis, mein Problem ist sicher keine große Sache für Euch.
Bitte um Hilfe, danke.

1. Ich habe in einem Formulat ein Textfeld, dass ich als Datum formatieren will.
2. Sollte eien andere Eingabe als ein Datum kommt, will ich eine Nachricht über die MsgBox("Bitte ein Datum eingeben!") ausgeben.
3. Wenn ich in der MsgBox (nach einem Fehler) auf OK drücke, soll der Curser wieder im Textfeld stehen.

Wenn ich das Textfeld anklicke kann ich dieses bearbeiten, aber wie lautet der Code der Formatierung? So, oder so ähnlich, habe ich mir das vorgestellt.
Mein Textfeld heist "txtDatum".

Private Sub txtDatum_Change()
   Textfeld formatieren
   fi Formatierung prüfen then
     ok, oder ins nächste Feld springen
   else
     MsgBox("Bitte ein Datum eingeben!")
     zurück ins Textfeld
   end if
End Sub


Liebe Grüße, Karl
Bild


Betrifft: AW: Textfeld in Formular als Datum von: Hajo_Zi
Geschrieben am: 24.03.2005 13:27:44

Hallo Karl,
Option Explicit
Dim BoEnter As Boolean
Private Sub TextBox6_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    '   erstellt von Hajo.ziplies@web.de  Stand 01.08.03
    '   Datumseingabe  01.01.03;1.1.03 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 TextBox6_AfterUpdate()
    Select Case KeyAscii
        Case Asc("0") To Asc("9")
        Case Asc(".")
            If Len(TextBox6) = 0 Then
                KeyAscii = 0
            Else
                If Len(TextBox6) - Len(Application.Substitute(TextBox6, ".", "")) = 2 Then
                    KeyAscii = 0
                ElseIf Len(TextBox6) > 1 Then
                    If Mid(TextBox6, Len(TextBox6), 1) = "." Then KeyAscii = 0
                Else
                    KeyAscii = Asc(".")
                End If
            End If
        Case Else
            KeyAscii = 0
    End Select
End Sub
Private Sub TextBox6_Change()
    If BoEnter = True Then Exit Sub
    If Len(TextBox6) = 2 Then
        If InStr(TextBox6, ".") = 0 And BoEnter = False Then TextBox6 = TextBox6 & "."
    ElseIf Len(TextBox6) = 5 Then
        If Len(TextBox6) - Len(Application.Substitute(TextBox6, ".", "")) < 2 Then
            TextBox6 = TextBox6 & "."
        End If
    End If
End Sub
Private Sub TextBox6_AfterUpdate()
    BoEnter = True
    If Right(TextBox6, 1) = "." Then TextBox6 = Mid(TextBox6, 1, Len(TextBox6) - 1)
    '   Jahreszahl vom aktuellen Jahr ergänzen falls nicht vorhanden
    If Len(TextBox6) - Len(Application.Substitute(TextBox6, ".", "")) = 1 Then
        TextBox6 = TextBox6 & "." & Year(Date)
    End If
    If IsDate(TextBox6.Text) Then
        If Format(CDate(TextBox6.Value), "dd.mm.yy") <> TextBox6 Then
            MsgBox "Das Datum wurde übersetzt"
        End If
        TextBox6 = Format(CDate(TextBox6.Value), "dd.mm.yy")
    Else
        TextBox6 = ""
    End If
    BoEnter = False
End Sub


Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.




 Bild

Beiträge aus den Excel-Beispielen zum Thema "Textfeld in Formular als Datum"