[VBA] Abfrage, ob Datum in der Zukunft liegt

Lasersword

Cadet 4th Year
Registriert
Jan. 2008
Beiträge
123
Hallo CBler,
Hallo VBA-Experten,

wie immer, wenn ich nicht mehr weiter weiß, seit ihr meine letzte Hoffnung (Google hat auch
schon versagt).

Folgendes Problem:

Ich habe in Excel 2003 eine Userform erstellt in dieser wird ein Datum eingegeben, das auf mehrere Plausibilitäten gepüft werden muß.
Hab jetzt folgenden Befehl benutzt:

Code:
Private Sub txtDatumFeststellung_AfterUpdate()

On Error Resume Next   'damit Debugger nicht anspringt, wenn Wert nicht Datum ist
Dim FD As String
FD = Format(UserForm1.txtDatumFeststellung.Value, "dd.mm.yy")

If IsDate(FD) = False Then
MsgBox "Bitte geben Sie ein gültiges Datum ein!"
UserForm1.txtDatumFeststellung.SetFocus
Exit Sub
ElseIf FD > Date Then
MsgBox "Das Datum liegt in der Zukunft!"
UserForm1.txtDatumFeststellung.SetFocus
Exit Sub
ElseIf DateDiff("yyyy", FD, Date) > 3 Then
MsgBox "Bitte Datum prüfen, der Fall liegt mehr" & vbCrLf & _
       "als 3 Jahre zurück!"
UserForm1.txtDatumFeststellung.SetFocus
Exit Sub
End If

End Sub

Gebe ist z. B. 25.12.2010 ein, bekomme ich auch die Msgbox-Meldung, ABER
gege ich 01.01.2011 ein (was ja ebenfalls in der Zukunft liegt) wird keine Meldung angezeigt.
Wo ist hier mein Denkfehler? :freak:

Anm. Exit Sub habe ich nur zum Test eingegeben, ist aber unrelevant.
 
Ich weiß es jetzt nicht genau aber mein Ansatz wäre dass: 25122010 > 01012011 und daher das nicht ganz funktioniert. Du müsstest das Jahr als erstes stellen also in der Richtung: 20110101
 
Habe jetzt keine Ahnung von den Funktionen wie Datediff, etc. Aber rein logisch betrachtet kann dann über datediff() < 0 auch festgestellt werden, ob das Datum in der Zukunft liegt.
Oder irre ich mich da?
 
Zuletzt bearbeitet:
Hallo Zwicke,

hinter einem Datum liegt doch eine Zahl.

So ist z. B. der 23.12.2010 die Zahl 40.535. (Anzahl der Tage von 01.01.1900 an)

Der 01.01.2011 ist 40.544

40.544 > 40.535
 
Ich würd es wohl irgendwie so machen:

Code:
eingabe = Format(FD, "yyyy")
jahr = Format(Now(), "yyyy")
if eingabe - jahr > 3 Then ...
 
Hallo redasurc,

jetzt klappt es.

Danke.

@Mr. Snoot, danke für den Hinweis, werde ich umsetzten.

Gruß,

Lasersword
 
Moin Lasersword ,

die angebotenen Lösungen hauen hin, wenn es darum geht, dass die Jahreszahl um 3 differiert. In wenigen tagen haben wir Januar 2011 und wenn du am 4.1.2011 den 30.12.2008 eingibst, dann sind das 2 Jahre und ein paar Tage. Und nicht 3 Jahre!

Schau dir mal die angehängte Datei an, da wird exakt auf 3 Jahre geprüft!

Schöne Feiertage 4all!
 

Anhänge

Hallo Captain,

hoffe du hattest schöne Festtage.

Vielen Dank für deinen Tip, funktioniert genauso, wie ich es brauche.

Gruß,

Lasersword
 
Zurück
Oben