Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
992to996
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
992to996
992to996
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

datum

datum
22.07.2008 23:24:23
ralf
hallo forum
habe fogenden code zur überwachung von einer uf.txtbox das nur datum eingegeben
werden kann(dd.mm.yy) . habe nun das problem das ich zwar nicht monat 13 eingeben kann
aber tage kann ich 99 eingeben . kann mir einer helfen
private sub
With TextBox1
If .Text = Empty Then
Exit Sub
ElseIf Not IsDate(.Text) Or _
InStr(.Text, ":") Or _
.TextLength 8 Then
.Text = ""
MsgBox "Bitte Datum eingeben und Format beachten TT.MM.JJ"
End If
End With
end sub
gruss
ralf

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: datum
22.07.2008 23:52:00
Ramses
Hallo
Bau das Kalender-Element zur Datumseingabe ein.
Für alles andere programmierst du dir wunde Finger.
Hier mal ein Beispiel das ich mal gemacht habe,... fängt aber immer noch nicht alle Fehleingaben ab

Function Check_Date(chkDate As Range) As Boolean
Dim i As Byte
Dim tmp As String
'Nur damit es nachher kürzer zu schreiben ist :-)
tmp = chkDate.Value
Select Case Len(tmp)
Case 10
'Format = 01.01.2007
'Prüfen ob Punkte richtig gesetzt sind
If Mid(tmp, 3, 1) = "." And Mid(tmp, 6, 1) = "." Then
'Monatsprüfun
Select Case Val(Mid(tmp, 4, 2))
'Monate prüfen
Case 1, 3, 5, 7, 8, 10, 12
If Val(Left(tmp, 2)) >= 1 And Val(Left(tmp, 2)) = 1 And Val(Left(tmp, 2)) = 1 And Val(Left(tmp, 2))  0 Then
Check_Date = True
Exit Function
End If
'Schaltjahr
If Val(Left(tmp, 2)) >= 1 And Val(Left(tmp, 2)) = 1 And Val(Left(tmp, 2)) = 1 And Val(Left(tmp, 2)) = 1 And Val(Left(tmp, 2))  0 Then
Check_Date = True
Exit Function
End If
'Schaltjahr
If Val(Left(tmp, 2)) >= 1 And Val(Left(tmp, 2)) = 1 And Val(Left(tmp, 2)) = 1 And Val(Left(tmp, 2)) = 1 And Val(Left(tmp, 2))  0 Then
Check_Date = True
Exit Function
End If
'Schaltjahr
If Val(Left(tmp, 2)) >= 1 And Val(Left(tmp, 2)) = 1 And Val(Left(tmp, 2)) = 1 And Val(Left(tmp, 2)) = 1 And Val(Left(tmp, 2))  0 Then
Check_Date = True
Exit Function
End If
'Schaltjahr
If Val(Left(tmp, 2)) >= 1 And Val(Left(tmp, 2)) 


Gruss Rainer

Anzeige
AW: datum
23.07.2008 00:03:00
Jürgen
Hallo Ralf,
"99.12.02" ist für isdate ein gültiges Datum im Format "yy.mm.dd" (also der 2. Dezember 1999).
Warum möchtest Du den Anwender so auf ein Eingabeformat festlegen? Wenn Du das Datum nach der Eingabe in genau diesem Format benötigst, dem Anwender aber etwas mehr Freiheit gewähren möchtest, ginge auch folgendes:
If Isdate(textbox1.text) then
DatumFormatiert = Format(Datevalue(TextBox1.text), "dd.mm.yy")
else
msgbox "Kein gültiges Datum"
end if
Bevor Du Dich aber noch mehr in Prüfroutinen auf gültige Datumswerte vertiefst: ist Dir bekannt, dass es in Excel ein DateTimePicker-Control gibt? Das kann (meistens - laut einiger Beiträge in diesem Forum nicht immer, aber in Office 2003 sehr wahrscheinlich) in die Werkzeugsammlung (also die kleine Toolbox, die bei der Bearbeitung einer Userform erscheint und die verfügbaren Steuerelemente anzeigt) aufgenommen werden, indem Du mit der rechten Maustaste in die Werkzeugsammlung klickst, im erscheinenden Kontextmenü "Zusätzliche Steuerelemente" auswählst und in der nun erscheinenden Liste den Eintrag "Microsoft Date and Time Picker Control" aktivierst.
Gruß, Jürgen

Anzeige
AW: datum
23.07.2008 00:36:00
Daniel
HI
falls du unbedingt ne Prüfung benötigst, dann kannst du es mal mit diesem Makro hier probieren.
Die Eingabe muss aber im Format TT.MM.JJ erfolgen, dh "1.1.08" wäre nicht möglich, es muss lauten "01.01.08"

Private Sub TextBox1_Change()
Dim bolIstDatum As Boolean
Dim T As String, T1 As String, T2 As String, T3 As String
bolIstDatum = False
T = TextBox1.Text
If Len(T) = 8 Then
If Mid$(T, 3, 1) & Mid$(T, 6, 1) = ".." Then
T1 = Mid$(T, 1, 2)
T2 = Mid$(T, 4, 2)
T3 = Mid$(T, 7, 2)
If IsNumeric(T1) And IsNumeric(T2) And IsNumeric(T3) Then
If CInt(T2) >= 1 And CInt(T2)  0)
Case Else
End Select
End If
End If
End If
End If
End Sub


die Regelschaltjahre (Jahreszahl durch 4 teilbar) werden berücksichtigt, die Ausnahmeschaltjahre nicht.
Gruß, Daniel

Anzeige
AW: datum
23.07.2008 16:37:30
ralf
hallo forum
erstmal danke für eure mühen . baue das kalenderelement ein.
habe gedacht das einfacher geht
gruss
ralf

AW: datum
24.07.2008 02:03:00
Erich
Hi Ralf und Daniel,
ein wenig kürzer gehts schon:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim bolIstDatum As Boolean
Dim T As String, T1 As String, T2 As String, T3 As String
bolIstDatum = False
T = TextBox1.Text
If Len(T) = 8 Then
If Mid$(T, 3, 1) & Mid$(T, 6, 1) = ".." Then
T1 = Mid$(T, 1, 2)
T2 = Mid$(T, 4, 2)
T3 = Mid$(T, 7, 2)
If IsNumeric(T1) And IsNumeric(T2) And IsNumeric(T3) Then
If CInt(T2) >= 1 And CInt(T2) 

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: datum
24.07.2008 15:48:00
ralf
hallo erich
herzlichen dank habe deine antwort gerade erst gesehen und habe
sie gerade mal getestet , funktioniert wunderbar.
danke nochmal an alle
gruss
ralf

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige