Video: Funktionen für Excel mit VBA erstellen Tutorial: Trailer |video2brain.com 2025
Die Funktion IsDate von VBA soll Ihnen sagen, ob ein Textstring als Datum interpretiert werden kann. Zum Beispiel werden alle der folgenden Ausdrücke als wahr ausgewertet:
IsDate ("5/25/2015") IsDate ("Januar 16") IsDate ("12-1") IsDate ("12/1/15") IsDate ("2/30") IsDate ("30/2")
Beachten Sie in den beiden letzten Beispielen, dass IsDate nicht wählerisch in der Reihenfolge von Tag und Monat ist. Beide Zeichenfolgen können als Datum interpretiert werden, daher gibt IsDate True zurück (unabhängig von den Systemdatumsformat-Einstellungen).
Hier einige Informationen aus einem Microsoft Support-Artikel:
Die VBA-Datumsfunktionen IsDate, Format, CDate und CVDate verwenden eine Funktion, die in OLE Automation (OleAut32. Dll) gefunden wird. Diese Funktion durchsucht alle möglichen Datumsformate, indem jeder der getrennten Werte in der Zeichenfolge, die das Datum darstellt, in Token umgewandelt wird, und gibt einen booleschen Wert zurück, der angibt, ob die Eingabe als Datum dargestellt werden kann.
Dies ist wichtig, wenn Sie die Funktion zum Interpretieren eines Datums verwenden, das ein zweistelliges Jahr enthält. Unterschiedliche Locales verwenden verschiedene Datumsformate (dh mm / tt / jj, jj / mm / tt, " TT MMM YJ " , " JJ MMM DD " und so weiter) und daher versucht die Funktion die Ziffern in allen Positionen zu testen, bis die Funktion ein gültiges Datum gefunden hat oder alle Möglichkeiten ausgeschöpft hat.
Nur weil IsDate einen String als Datum erkennt, bedeutet das nicht, dass der String zuverlässig in ein Datum konvertiert werden kann. In einigen Fällen ist das Ergebnis mehrdeutig. Zum Beispiel, was ist mit diesem Ausdruck?
IsDate ("29-Feb-01")
29. Februar 2001 ist kein gültiges Datum. Dieser Ausdruck gibt jedoch True zurück, da der 1. Februar 1929 (und der 2. Januar 1929) gültige Daten sind. Und so sind diese gleichen Daten im Jahr 2029.
Eine Suche nach IsDate-Dokumentation kam leer heraus. Auf der Grundlage von Tests akzeptiert IsDate folgende Zeichen als Trennzeichen: einen Schrägstrich (/), einen Bindestrich (-), ein Komma (,), einen Punkt (.) Und ein Leerzeichen.
Daher geben die folgenden Ausdrücke alle True zurück:
IsDate ("5. 1") IsDate ("30 6") IsDate ("30, 6") IsDate ("1/2")
dann gibt es diese Anomalie: Die folgenden Ausdrücke geben True zurück:
IsDate ("5. 1. 5") IsDate ("5. 1. 05")
Unexpliziterweise gibt dieser Ausdruck jedoch False zurück:
IsDate ("5. 1. 2005")
Angenommen, Sie haben eine UserForm mit einer EingabeBox erstellt, in der der Benutzer ein Datum eingibt. Es sollte klar sein, dass die Verwendung von IsDate zur Validierung des Eintrags nicht sehr zuverlässig ist.
Noch verwirrender wird es, wenn Sie erkennen, dass IsDate auch Zeitwerte abdeckt. (Es gibt keine entsprechende IsTime-Funktion.) Alle folgenden Ausdrücke geben True zurück:
IsDate ("4: 45") IsDate ("4. 45") IsDate ("4 45") IsDate ("4/45" ") IsDate (" 23: 59 ")
Diese Ausdrücke geben False zurück:
IsDate (" 4: 60 ") IsDate (" 24. 45 ")
Es ist wichtig darauf hinzuweisen, dass IsDate nicht Zeigen Sie all diese Macken, wenn Sie ein Range-Argument übergeben. Zum Beispiel:
IsDate (Range ("A1"))
Es scheint, dass IsDate bei der Identifizierung von Zellen, die ein Datum oder eine Uhrzeit enthält, absolut zuverlässig ist. Es identifiziert zum Beispiel nicht eine Zelle, die 5. 1 als Datum enthält. Wenn Ihr Code bestimmen muss, ob eine Zeichenfolge als Datum interpretiert werden kann, besteht die beste Lösung darin, diese Zeichenfolge in eine Zelle einzufügen und dann Code zu schreiben, um den Inhalt der Zelle zu überprüfen.