online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon dongel vom 18.03.2020, 14:49 Options

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

Ähnliche Themen

[Excel] Formeln mit VBA nutzen
Björn  07.10.2007 - 206 Hits - 2 Antworten

Schnellreferenz Excel VBA
Joshuan  23.05.2008 - 219 Hits - 3 Antworten

VBA-Excel
mentosbasi  28.05.2008 - 350 Hits - 3 Antworten

Wie finde die EXCEL-Installation in VBA raus?
user3  27.06.2008 - 75 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026