Datumsprüfung in Excel mit VBA
Hallo zusammen,
wie kann ich in Excel VBA ein Feld prüfen, in dem ein Datum 2,2008 steht.
Zur Zeit sieht mein VBA so aus:
Sub Datum()
Beginn:
Range("Variable!c3") = Application.InputBox( _
prompt:="Geben Sie das Datum ein MM,JJJJ:", Type:=1)
Range("d5").Select
Aus = MsgBox("Ist das Datum okay ?", vbYesNo)
If Aus = vbNo Then
GoTo Beginn
End If
End Sub
Ich habe also eine Eingabe-Maske, wo ich mein Datum "02,2008" eingebe und bekomme dann die Frage, ob dieses Datum okay ist.
Jetzt soll aber noch die Prüfung hinzugefügt werden, die folgendes machen soll:
Gebe ich ein Datum vor dem 01,2008 ein und klicke dann in der MessageBox auf Ja, soll der Hinweis kommen, dass das Datum vor dem 01.2008 und nicht okay ist und dann wieder zur Eingabe-Maske springen.
Hoffe ich habe es verständlich geschrieben. ;-)
Schönen Dank schon mal
MFG Dongel
Antwort schreiben
Antwort 1 von Tolwyn vom 18.03.2020, 17:59 Options
Hallo
leider weiß ich nicht mehr wie die Funktion dazu genau heißt, ich meine aber es war sowas wie "Substring".
NImm die Eingabe vom prompt in einer Variable entgegen und teile dann die Methode per "Substring" in zwei Teile (als Trennzeichen zwischen Monat und Jahr verwendest du ja scheinbar das Komma).
Dann kannst du den zweiten Teil (das Jahr) absplitten und diesen teil dann ggf. in Integer konvertieren und überprüfen, ob die Zahl kleiner als 2008 ist. Wenn du nur auf das aktuelle Jahr prüfen möchtest, kannst du es auch als String entgegennehmen und einfach auf den String "2008" prüfen.
Die Variante mit Goto ist übrigens nicht so der Hit.
Das solltest du in ein IF-ELSE , FOR-Schleife oder wenn du eine "Endlosschleife" erzeugen willst, nimm gleich die WHILE Schleife.
Also die methoden zum Teilen eines Strings gibt es auf jeden Fall.
(stichworte: substring, split, substr)
Soweit die Theorie;
Viel Spaß beim Suchen oder vllt kann dir ja noch jemand die konkreten Methoden sagen.
gruß
tolwyn
Antwort 2 von dongel vom 19.03.2020, 08:53 Options
Hi Tolwyn,
schönen Dank erst mal für die Antwort, leider verstehe ich selber nicht so viel von VBA, dass ich mir das mit substring usw. zusammenbauen kann. Ich hab versucht ein wenig danach zu suchen und auch was über substring, string-methoden gefunden, kann es aber leider nicht anwenden.
Vielleicht kann mir jemand die Formel hier posten?
Schönen Dank
mfg
Dongel
Antwort 3 von tomham vom 19.03.2020, 16:34 Options
Hi dongel!
Probier mal das aus:
Sub Datum()
Dim button
Dim eingabe, buf
Dim monat, jahr
Beginn:
eingabe = InputBox("Geben Sie das Datum ein MM,JJJJ:")
button = MsgBox("Ist das Datum okay ?" & vbCrLf & eingabe, vbYesNo)
If button = vbNo Then ' Hab mich vertippt oder so ...
GoTo Beginn
Else
buf=InStr(eingabe,",") ' Beistrich suchen, Position merken
monat=Left(eingabe,buf) ' Monat heraussuchen
jahr=Right(eingabe,4) ' Jahr heraussuchen
If monat<1 Or jahr<2008 Then ' Prüfkriterien
button=MsgBox("Wert nicht OK!",vbOkOnly)
goto Beginn
End If
End If
Range("Variable!C3").Value=eingabe ' Wenn alles OK dann Wert in Zelle "C3" in Tabelle "Variable" speichern
End Sub
Wär glaub ich das was du suchst.
MfG
tomham
Antwort 4 von dongel vom 25.03.2020, 10:25 Options
Hi tomham,
genau so sollte es sein. ;-)
Wunderbar, schönen Dank!
mfg
dongel