Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Inputbox so oft anzeigen, bis richtiger Wert
#1
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
Antworten Top
#2
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)
Antworten Top
#3
Hallo!

Danke für die schnelle Antwort. Ehrlich gesagt, nein. Wo genau baue ich das ein?

LG
Thomas
Excel Version 2016
Antworten Top
#4
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)
Antworten Top
#5
danke sehr, aber was meinst du mit "irgendeine Eingabe"?
Excel Version 2016
Antworten Top
#6
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 Datum
Do
  Datum = CDate(Application.InputBox("Datum:", Type:=1))
  If Datum = False Then Exit Sub 'beim Klick auf Abbrechen oder Esc
Loop Until CDate(Datum) < Date And Year(CDate(Datum)) > 2000
MsgBox CDate(Datum)
End Sub


Gruß 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:
A
105.03.2021

ZelleGültigkeitstypOperatorWert1Wert2
A1Datumkleiner=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)
Antworten Top
#7
Hallöchen,

Zitat:was meinst du mit "irgendeine Eingabe"?
das kam noch von der ersten Antwort Smile

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)
Antworten Top
#8
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
Antworten Top
#9
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)
Antworten Top
#10
ich will die Lösung via VBA und nicht via Formel
Excel Version 2016
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste