Я обрабатываю книгу Excel с помощью Access VBA (см. Reading an Excel workbook from Access), и теперь я хочу проверить, содержит ли ячейка действительное значение времени. Для дат я использую IsDate(), и он отлично работает.Как проверить значения Excel в Access VBA?
Но со значениями времени это не так (поскольку IsTime() не используется, я также использую IsDate() для значений времени). Или я должен использовать IsNumeric, потому что значения времени хранятся как удваиваются?
С «12:00:00» (с пространством) IsDate() дает TRUE (!?), Но сам Excel не распознает его как значение времени, отладчик VBA также показывает его как текстовую строку.
С «12:00:00» IsDate() дает FALSE, но сам Excel распознает его как значение времени, отладчик VBA показывает значение 0,5.
Кто-нибудь?
UPDATE 9/12:
Благодаря @belisarius и @ mwolfe02 Я нашел это для моей ситуации:
/* 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
Так что мне нужно только, чтобы проверить, если TypeName()
возвращает Double
и IsNumeric() True
и во избежание путаницы с «нормальными» числовыми значениями, если значение = 0 и < 1. Правильно?
Спасибо за ваш исчерпывающий ответ. Я все еще не полностью понимаю проблему, но для моей ситуации у меня есть правильная информация (я думаю), я добавлю свои выводы в качестве ответа на мой вопрос – waanders 2010-12-09 14:36:52