Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
776to780
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
776to780
776to780
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Prüfung des Datums in TextBox
04.07.2006 08:01:05
Josef
Hallo!
Wenn man in einer TextBox ein Datum mit der Vorgabe TTMMJJJJ eingibt, so sollte geprüft werden ob auch tatsächlich ein Datum eingegeben wurde.
z.B. 04072006 und nicht 04070006 oder 04072060 oder 40720006.
Kann hier bitte eine Prüfung mittels VBA vorgenommen werden und wenn ja wie würde hier bitte eine Lösung aussehen?
Danke
Josef

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfung des Datums in TextBox
04.07.2006 08:25:21
Mustafa
Hallo Josef,
Versuch es mal so:

Private Sub CommandButton1_Click()
If Not Len(Me.TextBox1.Value) = 8 Then GoTo Errorhandler
If Left(Me.TextBox1.Value, 1) = "0" Then
If Left(Me.TextBox1.Value, 2) < "01" Or Left(Me.TextBox1.Value, 2) > "09" Then GoTo Errorhandler
End If
If Left(Me.TextBox1.Value, 2) > 31 Then GoTo Errorhandler
If Mid(Me.TextBox1.Value, 3, 1) = "0" Then
If Mid(Me.TextBox1.Value, 3, 2) < "01" Or Mid(Me.TextBox1.Value, 3, 2) > "12" Then GoTo Errorhandler
End If
If Mid(Me.TextBox1.Value, 3, 2) > "12" Then GoTo Errorhandler
If Right(Me.TextBox1.Value, 4) < "2000" Or Right(Me.TextBox1.Value, 4) > "2010" Then GoTo Errorhandler
Exit Sub
Errorhandler:
MsgBox "Datm eingeben"
End Sub

Nicht schön aber selten.
Rückmeldung wäre nett.
Viele Grüße aus Köln.
Anzeige
AW: Prüfung des Datums in TextBox
04.07.2006 08:41:46
Josef
Hallo Mustafa!
Besten Dank für Deine Hilfe, würde bestens funktionieren. Eine Frage hätte ich noch dazu.
Kann man vielleicht noch folgende Prüfung einbauen:?
kleiner als das Tagesdatum
Danke
Josef
AW: Prüfung des Datums in TextBox
04.07.2006 08:56:30
Mustafa
Hallo Josef,
das wird dann zu viel für mein geringes VBA wissen.
Ich lasse die Frage offen damit jemand anderer es evtl. beantworten kann.
Danke für die Rückmeldung.
Viele Grüße aus Köln.
AW: Prüfung des Datums in TextBox
04.07.2006 09:11:47
Mustafa
Hallo nochmal Josef,
hab den Code mal etwas abgeändert, und nach etlichen Versuchen auch die Vergleichsfunktion eingebaut.
Hier der neue Code:

Private Sub CommandButton1_Click()
Dim lngx As String
Dim lngy As String
Dim lngz As String
Dim Tag As Byte
Dim Monat As Byte
Dim Jahr As Byte
lngx = Left(Me.TextBox1.Value, 2)
lngy = Mid(Me.TextBox1.Value, 3, 2)
lngz = Right(Me.TextBox1.Value, 4)
If Not Len(Me.TextBox1.Value) = 8 Then GoTo Errorhandler
Select Case lngx
Case "01" To "31"
Tag = 1
End Select
Select Case lngy
Case "01" To "12"
Monat = 1
End Select
Select Case lngz
Case "2000" To "2010"               ' Hier kannst du das Jahr eingrenzen
Jahr = 1
End Select
If Tag = 0 Then GoTo Errorhandler
If Monat = 0 Then GoTo Errorhandler
If Jahr = 0 Then GoTo Errorhandler
datum = DateSerial(lngz, lngy, lngx)
If datum < Date Then GoTo Errorhandler
Exit Sub
Errorhandler:
MsgBox "Datm eingeben"
End Sub

Rückmeldung wäre nett.
Viele Grüße aus Köln.
Anzeige
AW: Prüfung des Datums in TextBox
04.07.2006 08:42:34
Matthias
Hallo Josef,
mein Vorschlag:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim dat As String
dat = IstDatum(TextBox1)
If dat = "" Then
MsgBox "Kein gültiges Datum!"
Cancel = True
Else
TextBox1 = dat
End If
End Sub
Function IstDatum(ByVal d As String) As String
Const jMax = 2060
Const jMin = 1950
Dim d1 As String, d0 As Date, j As Integer
d = Replace(d, ".", "")
If Len(d) = 8 Or Len(d) = 6 Then
d1 = Left(d, 2) & "." & Mid(d, 3, 2) & "." & Right(d, Len(d) - 4)
If IsDate(d1) Then
d0 = CDate(d1)
If (Year(d0) >= jMin And Year(d0) <= jMax) Then IstDatum = Format(d0, "dd/mm/yyyy")
End If
End If
End Function

Es werden auch 2-stellige Jahreszahlen toleriert. Wenn die Eingabe gültig ist, wird im Eingabefeld das Datum im Format TT.MM.JJJJ eingetragen. Ansonsten erscheint eine Fehlermeldung und die Textbox wird nicht verlassen.
Gruß Matthias
Anzeige
AW: Prüfung des Datums in TextBox
04.07.2006 08:55:28
Josef
Hallo Matthias!
Danke für Deine Lösung.
Ich müßte das Datum jedoch ohne Punkt eingeben, also z.B. 20062006 und dann bekomme ich, trotzdem ich in der Function die Punkte rausnahm den Hinweis "Kein Datum eingegeben.
Josef
AW: Prüfung des Datums in TextBox
04.07.2006 09:08:21
Matthias
Hallo Josef,
du meinst, das Datum soll auch nach der Eingabe ohne Punkte erscheinen? Dann die Zeile so anpassen:

If (Year(d0) >= jMin And Year(d0) <= jMax) Then IstDatum = Replace(Format(d0, "dd/mm/yyyy"), ".", "")

Gruß Matthias
AW: Prüfung des Datums in TextBox
04.07.2006 09:19:46
Josef
Hallo Matthias!
Habe jetzt die Zeile ausgetauscht.
Nach der Eingabe von 20062006 wird zar der Inhalt richtig angezeigt, ich bekomme jedoch die Meldung : "Kein gültiges Datum"
Der 20062006 ist jedoch ein gültiges Datum. Wo könnte ich hier bitte noch den Fehler haben?
Danke
Josef
Anzeige
AW: Prüfung des Datums in TextBox
04.07.2006 09:31:54
Mustafa
Hallo Josef,
noch eine Überarbeitete Form meines Codes:

Private Sub CommandButton1_Click()
Dim lngx As String
Dim lngy As String
Dim lngz As String
Dim Tag As Byte
Dim Monat As Byte
Dim Jahr As Byte
lngx = Left(Me.TextBox1.Value, 2)
lngy = Mid(Me.TextBox1.Value, 3, 2)
lngz = Right(Me.TextBox1.Value, 4)
If Not Len(Me.TextBox1.Value) = 8 Then GoTo Err1
Select Case lngx
Case "01" To "31"
Tag = 1
End Select
Select Case lngy
Case "01" To "12"
Monat = 1
End Select
Select Case lngz
Case "2000" To "2010"               ' Hier kannst du das Jahr eingrenzen
Jahr = 1
End Select
If Tag = 0 Then GoTo Err1
If Monat = 0 Then GoTo Err1
If Jahr = 0 Then GoTo Err1
datum = DateSerial(lngz, lngy, lngx)
If lngy = "02" And lngx > "29" Then GoTo Err2
If lngy = "04" Or lngy = "06" Or lngy = "09" Or lngy = "11" Then
If lngx > "30" Then GoTo Err3
End If
If datum < Date Then GoTo Err4
If datum > Date Then GoTo Err5
Exit Sub
Err1:
MsgBox "Falsches Datumsformat"
Exit Sub
Err2:
MsgBox "Der Februar hat maximal 29 Tage"
Exit Sub
Err3:
MsgBox "Dieser Monat hat nur 30 Tage"
Exit Sub
Err4:
MsgBox "Datum kleiner als Heute"
Exit Sub
Err5:
MsgBox "Datum größer als Heute"
Exit Sub
End Sub

Rückmeldung wäre nett.
Viele Grüße aus Köln.
Anzeige
AW: Prüfung des Datums in TextBox
04.07.2006 10:10:18
Josef
Hallo Mustafa!
Danke für Deinen Lösungsvorschlag und Deine Mühe. Würde so ziemlich hinpassen. Nur müßte ich hier noch einiges ändern:
1. Wie kann ich bei einer falschen Eingabe die TextBox wieder aktivieren:
Mit
Err1:
TextBox1.Text = ""
Cancel = True
MsgBox "Sie haben kein gültiges Datum eingegeben!"
wird die TextBox trotz Cancel = True nicht aktiviert.
2. Wie bekomme ich bei einem Abbruch, sprich Schliessen der Userform die MsgBox mittels VBA weg.

Private Sub CommandButton2_Click()
Unload UserForm1
MsgBox?
ActiveWorkbook.Close savechanges:=False
End Sub

3. Wie erhalte ich beim aktivieren einer Userform automatisch das aktuelle Jahr in einer Textbox?
Danke
Josef
Anzeige
AW: Prüfung des Datums in TextBox
04.07.2006 10:19:46
Mustafa
Hallo Josef,
Zu 1: mit Textbox.Activate sollte es gehen.
Zu 2: weiss ich leider nicht, aber ich glaube geht nicht.
Zu 3: TextBox2 = Format(Date, "YYYY") sollte funktionieren.
Viele Grüße aus Köln.
AW: Prüfung des Datums in TextBox
04.07.2006 11:14:36
Josef
Halo Mustafa!
Danke für Deine Hilfe.Jetzt passt so ziemlich alles.
Josef
Gern geschehen owT
04.07.2006 11:15:20
Mustafa
AW: Prüfung des Datums in TextBox
04.07.2006 09:56:21
Mustafa
Nochmal ich,
jetzt die Aktuellste Version des Codes :

Private Sub CommandButton1_Click()
Dim lngx As String
Dim lngy As String
Dim lngz As String
Dim Tag As Byte
Dim Monat As Byte
Dim Jahr As Byte
lngx = Left(Me.TextBox1.Value, 2)
lngy = Mid(Me.TextBox1.Value, 3, 2)
lngz = Right(Me.TextBox1.Value, 4)
If Not Len(Me.TextBox1.Value) = 8 Then GoTo Err1
Select Case lngy
Case "01", "03", "05", "07", "08", "10", "12"
Select Case lngx
Case Is > "31"
GoTo Err2
End Select
Case "02"
Select Case lngx
Case Is > "29"
GoTo Err3
End Select
Case "04", "06", "09", "11"
Select Case lngx
Case Is > "30"
GoTo Err4
End Select
Case Else
GoTo Err4
End Select
If lngz < "2000" Or lngz > "2050" Then GoTo Err5
datum = DateSerial(lngz, lngy, lngx)
If datum < Date Then GoTo Err6
If datum > Date Then GoTo Err7
'Anstelle der MessageBoxen kannst du eventuell andere Makros aufrufen.
Err1:
MsgBox "Falsches Datumsformat"
Exit Sub
Err2:
MsgBox "Dieser Monat hat nur 31 Tage"
Exit Sub
Err3:
MsgBox "Der Februar hat Maximal 29 Tage"
Exit Sub
Err4:
MsgBox "Dieser Monat hat nur 30 Tage"
Exit Sub
Err5:
MsgBox "Ungültiges Jahr"
Exit Sub
Err6:
MsgBox "Datum kleiner als Heute"
Exit Sub
Err7:
MsgBox "Datum größer als Heute"
End Sub

Rückmeldung wäre nett.
Viele Grüße aus Köln.
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige