Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

isDate()
#1
Warum gibt mir im VBA isDate("12,22") true zurück? Wie lässt sich der Wert auf Date richtig prüfen?
Antworten Top
#2
Debug.Print CDate("12,22")
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Frogger1986
Antworten Top
#3
Dodgy wie prüfe ich das jetzt auf ein Datum, wo es doch keines dar stellt, sondern einen Geldbetrag...  22
Antworten Top
#4
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.
Antworten Top
#5
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...
Antworten Top
#6
Hallo, 19 

wir wissen nicht, was du vorhast. Blush 

Aber du könntest es z. B. so prüfen: 21 

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: 21 

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:
  • Frogger1986
Antworten Top
#7
(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!
Antworten Top
#8
@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!
Antworten Top
#9
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:
  • Frogger1986
Antworten Top


Gehe zu:


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