Registriert seit: 08.02.2017
Version(en): 2016
Hallo!
Ich habe folgendes Problem. Ich gebe in einer Inputbox ein Datum ein, was nicht in der Zukunft liegen darf. Nun möchte ich, dass diese Inputbox solange kommt, bis ich das korrekte Datum (sprich, keines in der Zukunft) eingegeben habe.
Code:
Anmeldedatum = InputBox("Bitte das Anmeldedatum eingeben: ")
If Anmeldedatum = "" Then
Exit Sub
End If
If CDate(Anmeldedatum) > Date Then
MsgBox "Das von dir soeben eingegebene Anmeldedatum (" & Format(Anmeldedatum, "DD.MM.YYYY") & ") darf zeitlich nicht in der Zukunft liegen."
Anmeldedatum = InputBox("Bitte gib das Anmeldedatum erneut ein: ")
If Anmeldedatum = "" Then
Exit Sub
End If
End If
Ich hoffe, dass mir jemand helfen kann.
LG
Thomas
Excel Version 2016
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
10.03.2021, 08:33
(Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2021, 08:34 von schauan.)
Hallöchen,
im Prinzip etwas in der Art
Do While Anmeldedatum <> "irgendeine Eingabe"
Anmeldename = ...
Loop
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 08.02.2017
Version(en): 2016
Hallo!
Danke für die schnelle Antwort. Ehrlich gesagt, nein. Wo genau baue ich das ein?
LG
Thomas
Excel Version 2016
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
das ersetzt Deinen Code. Du musst nur noch das verlassen und die Zukunftsprüfung verarbeiten
Code:
Do While Anmeldedatum <> "irgendeine Eingabe"
Anmeldename = InputBox ...
If Anmeldedatum = "" Then Exit Sub
If CDate(Anmeldedatum) > Date Then
MsgBox "Das von dir ... "
End If
Loop
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 08.02.2017
Version(en): 2016
danke sehr, aber was meinst du mit "irgendeine Eingabe"?
Excel Version 2016
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
10.03.2021, 09:19
(Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2021, 09:26 von RPP63.)
Moin!
Ich würde die Application.InputBox-Methode statt der InputBox-Funktion nehmen.
Hat den Vorteil, dass ich bereits einen Datentyp (hier Type:=1 also Zahl) vorgeben kann und mir das Debugging erleichtere.
Schnell zusammengeklöppelt so:
Sub Date_Past()Dim DatumDo Datum = CDate(Application.InputBox("Datum:", Type:=1)) If Datum = False Then Exit Sub 'beim Klick auf Abbrechen oder EscLoop Until CDate(Datum) < Date And Year(CDate(Datum)) > 2000MsgBox CDate(Datum)End SubGruß Ralf
Wobei Du Dir schon die Frage nach dem Sinn des Ganzen stellen lassen musst!
So etwas geht doch sehr viel leichter mit der Datengültigkeit:
Zelle | Gültigkeitstyp | Operator | Wert1 | Wert2 |
A1 | Datum | kleiner | =HEUTE() | |
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)
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
Zitat:was meinst du mit "irgendeine Eingabe"?
das kam noch von der ersten Antwort

Wenn Du Do While nimmst, müsstest Du die Variable vorher schon mit irgendwas belegen. Das müsste in der Schleife dann auch wieder gesetzt werden, damit diese weiter läuft. Wenn Du es machst wie bei Ralf, also oben nur Do und unten die Prüfung erst bei Loop, ersparst Du Dir die Vorbelegung.
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 08.02.2017
Version(en): 2016
10.03.2021, 10:41
(Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2021, 10:52 von dertommy.)
Hallo!
Danke allen, ihr habt mir sehr weiter geholfen.
Anbei der Lösungcode:
Code:
Dim Anmeldedatum
Anmeldedatum = CDate(Application.InputBox("Bitte das Anmeldedatum eingeben:", Type:=1))
If Anmeldedatum = False Then Exit Sub 'beim Klick auf Abbrechen oder Esc
Do
If CDate(Anmeldedatum) > Date Then
MsgBox "Das von dir soeben eingegebene Anmeldedatum (" & Format(Anmeldedatum, "DD.MM.YYYY") & ") darf zeitlich nicht in der Zukunft liegen."
Anmeldedatum = CDate(Application.InputBox("Bitte das Anmeldedatum erneut eingeben:", Type:=1))
If Anmeldedatum = False Then Exit Sub 'beim Klick auf Abbrechen oder Esc
End If
Loop Until CDate(Anmeldedatum) <= Date
LG
Thomas
Excel Version 2016
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
Und warum nicht die einfache Datengültigkeit?
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)
Registriert seit: 08.02.2017
Version(en): 2016
10.03.2021, 10:54
(Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2021, 10:54 von dertommy.)
ich will die Lösung via VBA und nicht via Formel
Excel Version 2016