Ich verarbeite eine Excel-Arbeitsmappe mit Access VBA (siehe Reading an Excel workbook from Access) und jetzt möchte ich überprüfen, ob eine Zelle einen gültigen Zeitwert enthält. Für Daten benutze ich IsDate() und es funktioniert gut.Wie überprüft man Excel-Zeitwerte in Access VBA?
Aber mit Zeitwerten nicht (da es keine IsTime() gibt, verwende ich auch IsDate() für Zeitwerte). Oder sollte ich IsNumeric verwenden, da die Zeitwerte doppelt gespeichert werden?
Mit "12:00:00" (mit Leerzeichen) gibt IsDate() TRUE (!?), Aber Excel selbst erkennt es nicht als Zeitwert, der VBA-Debugger zeigt es auch als Textzeichenfolge an.
Mit "12:00:00" IsDate() gibt FALSE aber Excel selbst erkennen es als Zeitwert, der VBA-Debugger zeigt den Wert 0,5.
Jeder?
UPDATE 12.09:
Dank @belisarius und @ mwolfe02 fand ich das für meine Situation:
/* Valid time value */
IsDate() = False,
IsNumeric() = True,
TypeName() = Double
/* Numeric (no time) value */
IsDate() = False,
IsNumeric() = True,
TypeName() = Double
/* Valid date value */
IsDate() = True,
IsNumeric() = False,
TypeName() = Date
/* Invalid time value (e.g. with leading space as in above example) */
IsDate() = True,
IsNumeric() = False,
TypeName() = String
So überprüfen muss ich nur, wenn TypeName()
kehrt Double
und IsNumeric() True
und Verwirrung vermeiden mit 'normalen' numerischen Werten, wenn der Wert> = 0 ist und < 1. Richtig?
Danke für Ihre umfassende Antwort. Ich verstehe das Problem immer noch nicht vollständig, aber für meine Situation habe ich die richtigen Informationen (denke ich), ich werde meine Ergebnisse als Antwort auf meine Frage hinzufügen – waanders