[VBS] Datumsvalidierung dd.mm.yyyy

Raknar

Ensign
Registriert
Apr. 2006
Beiträge
174
Hallo,

ich bin gerade am Verzweifeln. Der Benutzer soll einfach nur ein Datum im Format dd.mm.yyyy eingeben, also zb 10.12.2012. Ich finde aber kein Mittel um diese Eingabe auf ihre Richtigkeit zu überprüfen. Die Methoden isDate(), Format, FormatDateTime versuchen irgendein Datumsformat zu erkennen. Ein 10.15.2012 wird dann zu einem 15.10.2012 und kommt in die weitere Verarbeitung. Ich möchte das aber so, dass der Benutzer aufgefordert wird, ein richtiges Datum einzugeben.

Meine letzte Idee war eine eigene Funktion und sah so aus:
Code:
Function ddmmyyyy(varDate)
ddmmyyyy = Day(DateValue(varDate)) & "." & Month(DateValue(varDate)) & "." & Year(DateValue(varDate))
End Function
Hat auch nicht geklappt. Hat jemand eine Idee?
 
1. Schritt
Splitte die Eingabe an den Punkten auf (Split-Funktion) und schreibe das Ergebnis in ein Array:
nArray = Split(nEingabe,".")
Teste, ob überhaupt zwei Punkte da waren! Das Array muss drei Einträge haben (0 bis 2)
if ubound(nArray) <> 2 then ...

2. Schritt
Teste die Gültigkeit des Monats (im 2. Element):
if nArray(1) < 1 or nArray(1)>12 then ....

3. Schritt
Du kannst noch Jahr und Tag auf ähnliche Weise testen. Danach mit isDate validieren.
 
Vielen Dank an FormatC :)

So sieht's bei mir jetzt aus:
Code:
Function datum(dat)
nArray = Split(dat, ".")

If UBound(nArray) <> 2 Then
    MsgBox "Die zwei Punkte zwischen den Zahlen nicht vergessen!"
    WScript.Quit
End If

If nArray(0) < 1 Or nArray(1) > 31 Then
    MsgBox "Tag falsch!"
    WScript.Quit
End If
nArray(0) = Right("0" & nArray(0), 2)

If nArray(1) < 1 Or nArray(1) > 12 Then
    MsgBox "Monatsangabe falsch!"
    WScript.Quit
End If
nArray(1) = Right("0" & nArray(1), 2)
tmp = nArray(0) & "." & nArray(1) & "." & nArray(2)

x = MsgBox("Stimmt folgendes Datum: " & tmp, vbYesNo, "Datum")
If x = vbNo Then
    WScript.Quit
End If
datum = tmp
End Function
Da das eine Übergangslösung (Bug im DMS, warten auf Patch) ist, habe ich mir die Schaltjahrproblematik gespart.
 
Zurück
Oben