Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Datumsüberprüfung
#1
Nabend zusammen...

Mit dem Code im Userform
Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
      
   If DatumGetestet(TextBox1.Value) = False Then
    Cancel = True
    MsgBox "Bitte richtiges Datum eingeben"
    Application.EnableEvents = False
    TextBox1.SetFocus
    Application.EnableEvents = True
   Else
    TextBox1 = Format(DatumGetestet(TextBox1.Value), "dd/mm/yyyy")
   End If
  
End Sub

und mit diesem in einem Modul

Code:
Public Function DatumGetestet(strDatum As String) As Variant
  'Funktion erkennt A L L E
  'fehlerhaften Datumsangaben
  'Auch Überprüfung auf Monat 28, 30 oder 31 Tage
  '(bei Februar auf Schaltjahre)
  'nur Ziffern angaben zulässig (oder die Formate erweitern)
  'Function gibt bei Fehler False (Boolean)
  'und bei gültigem Datum das Datum (Date) zurück
DatumGetestet = False
If IsDate(strDatum) Then
Select Case Trim(strDatum)
  Case Format(CDate(strDatum), "d/m/yy"), _
       Format(CDate(strDatum), "d/m/yyyy"), _
       Format(CDate(strDatum), "d/mm/yy"), _
       Format(CDate(strDatum), "d/mm/yyyy"), _
       Format(CDate(strDatum), "dd/m/yy"), _
       Format(CDate(strDatum), "dd/m/yyyy"), _
       Format(CDate(strDatum), "dd/mm/yy"), _
       Format(CDate(strDatum), "dd/mm/yyyy")
   DatumGetestet = CDate(strDatum)
End Select
End If

End Function

bekomme ich eine Fehlermeldung, wenn kein richtiges Datum eingetragen wurde. Soweit ist es richtig. Wie müsste der Code nun aussehen, wenn die Prüfung nur erfolgen soll, wenn tatsächlich auch irgendwas im Textfeld steht. Sprich wenn es leer ist, soll es keine Prüfung geben. Und wie könnte die Datumsprüfung aussehen, wenn bei einer Eingabe nur ein Datum zugelassen wird, was im aktuellen Monat liegt.

Danke für Eure Hilfe!

Grüße
Antworten Top
#2
Hallo!
Warum diese Funktion?
Die Prüfung auf IsDate() reicht doch völlig.
Ich mache dies so:
Code:
Private Sub txtBeginn_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With txtBeginn
   If .Text = "" Then Exit Sub
   If IsDate(.Text) Then
       .Text = Format(.Text, "dd.mm.yyyy")
   Else
       MsgBox .Text & " ist kein gültiges Datum!"
       .Text = ""
       Cancel = True
   End If
End With
End Sub
Zitat:Und wie könnte die Datumsprüfung aussehen, wenn bei einer Eingabe nur ein Datum zugelassen wird, was im aktuellen Monat liegt.

Code:
If Month(Date) <> Month(Cdate(.Text)) Then MsgBox "Falscher Monat!"


Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#3
Danke Ralf! Code 1 habe ich bereits am Laufen. Kannst du mir noch verraten, wie ich Code 1 und 2 miteinander kombinieren kann.

Danke und Grüße
Sandor
Antworten Top
#4
Hi!
Ungetestet:
Code:
Private Sub txtBeginn_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With txtBeginn
  If .Text = "" Then Exit Sub
  If IsDate(.Text) Then
     If Month(Date) <> Month(CDate(.Text)) Then
        MsgBox "Falscher Monat " & Format(.Text, "mmmm") & "!"
        .Text = ""
        Cancel = True
        Exit Sub
     End If
     .Text = Format(.Text, "dd.mm.yyyy")
  Else
     MsgBox .Text & " ist kein gültiges Datum!"
     .Text = ""
     Cancel = True
  End If
End With
End Sub


Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • sandormiles
Antworten Top
#5
Danke Ralf! Funktioniert!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste