Registriert seit: 02.12.2017
Version(en): Office 365
Warum gibt mir im VBA isDate("12,22") true zurück? Wie lässt sich der Wert auf Date richtig prüfen?
Eine Menge reden, aber nichts sagen können viele...
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Debug.Print CDate("12,22")
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• Frogger1986
Registriert seit: 02.12.2017
Version(en): Office 365
wie prüfe ich das jetzt auf ein Datum, wo es doch keines dar stellt, sondern einen Geldbetrag...
Eine Menge reden, aber nichts sagen können viele...
Registriert seit: 13.04.2014
Version(en): 365, 2019
Hi,
wenn keine Beträge über 23743(=1.1.1965) vorkommen, dann prüfe es damit.
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 02.12.2017
Version(en): Office 365
Aber ein Betrag von 12,12€ z.B. wird ja als Datum erkannt obwohl es ein Geldbetrag ist. Es soll ja ein Darum ausgeschlossen werden...
Eine Menge reden, aber nichts sagen können viele...
Registriert seit: 30.08.2014
Version(en): Office 365 - Beta 32 Bit
Hallo,
wir wissen nicht, was du vorhast.
Aber du könntest es z. B. so prüfen:
Code:
Dim strTMP As String
strTMP = "12,22"
If IsDate(strTMP) And strTMP Like "##.##" Then MsgBox strTMP & " OK" Else MsgBox strTMP & " Nicht OK"
strTMP = "12.22"
If IsDate(strTMP) And strTMP Like "##.##" Then MsgBox strTMP & " OK" Else MsgBox strTMP & " Nicht OK"
Oder auch so:
Code:
Dim strTMP As String
strTMP = "12,22"
If IsDate(strTMP) And strTMP Like "##.##" Then MsgBox strTMP & " OK" Else MsgBox strTMP & " Nicht OK"
strTMP = "12.22"
If IsDate(strTMP) And strTMP Like "##.##" Then MsgBox strTMP & " OK" Else MsgBox strTMP & " Nicht OK"
strTMP = "12.12.22"
If IsDate(strTMP) And strTMP Like "##.##" Or strTMP Like "##.##.##" Then MsgBox strTMP & " OK" Else MsgBox strTMP & " Nicht OK"
strTMP = "12.12.2022"
If IsDate(strTMP) And strTMP Like "##.##" Or strTMP Like "##.##.##" Or strTMP Like "##.##.####" Then MsgBox strTMP & " OK" Else MsgBox strTMP & " Nicht OK"
strTMP = "12,12.2022"
If IsDate(strTMP) And strTMP Like "##.##" Or strTMP Like "##.##.##" Or strTMP Like "##.##.####" Then MsgBox strTMP & " OK" Else MsgBox strTMP & " Nicht OK"
Oder vielleich auch ganz anders - je nachdem, was du vorhast.
"
IsDate" schaut ja nur, ob der Wert in ein Datum
konvertiert werden
KANN. Und das geht bei "12,12".
________
Servus
Case
Folgende(r) 1 Nutzer sagt Danke an Case für diesen Beitrag:1 Nutzer sagt Danke an Case für diesen Beitrag 28
• Frogger1986
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
(17.06.2022, 19:48)Frogger1986 schrieb: Aber ein Betrag von 12,12€ z.B. wird ja als Datum erkannt obwohl es ein Geldbetrag ist.
IsDate("12,12€") ergibt False!
Registriert seit: 02.12.2017
Version(en): Office 365
@Kuwer ja, das gibt false, jedoch werden Beträge nicht mit € eingegeben. Das diente nur der Verdeutlichung! Vielen Dank für die Hilfe, den Ansatz von Case werde ich nutzen, so komme ich weiter!
Eine Menge reden, aber nichts sagen können viele...
Registriert seit: 25.11.2021
Version(en): 2019, 365
18.06.2022, 08:49
(Dieser Beitrag wurde zuletzt bearbeitet: 18.06.2022, 08:52 von Ralf A.)
Hi,
wenn Du auf Value prüfst, dann erhältst Du 12,22
Prüfst Du auf Text, dann erhältst Du 12,22 €
Prüfst Du auf Style, erhältst Du Currency (bei Währung)
Bsp.:
Code:
With Range("F7")
Debug.print "Style: " & .Style, "Text: " & .Text , "Wert: " & .Value
If IsDate(.Text) Then
MsgBox "Datum"
Else
MsgBox "Kein Datum"
End If
End With
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Ciao, Ralf
Folgende(r) 1 Nutzer sagt Danke an Ralf A für diesen Beitrag:1 Nutzer sagt Danke an Ralf A für diesen Beitrag 28
• Frogger1986