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?
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...
Registriert seit: 13.04.2014
Version(en): 365
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...
00202
Nicht registrierter Gast
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".
Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:1 Nutzer sagt Danke an Gast für diesen Beitrag 28
• Frogger1986
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
(17.06.2022, 20: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!
Registriert seit: 25.11.2021
Version(en): 2019, 365
18.06.2022, 09:49
(Dieser Beitrag wurde zuletzt bearbeitet: 18.06.2022, 09: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