Существует два разных понятия:
1) Формат даты и времени
Когда вы форматируете ячейку в Excel, чтобы содержать дату (и / или) время,Excel использует внутреннее представление.По данным MS:
По умолчанию 1 января 1900 года - это серийный номер 1, а 1 января 2008 года - серийный номер 39448, поскольку после 1 января 1900 года это 39,448 дней. Microsoft Excel для Macintosh использует другойсистема дат по умолчанию.Числа справа от десятичной точки в серийном номере представляют время;цифры слева представляют дату.Например, серийный номер .5 представляет время 12:00.
И это все.Даты и время хранятся в виде десятичных чисел.
2) Вещи, которые VBA может преобразовать в дату / время
Это то, что проверяет IsDate,Согласно MS:
Возвращает логическое значение, указывающее, можно ли преобразовать выражение в дату.
Истина, возвращаемая IsDate, не означает, что ячейка была отформатирована как Дата/ Время, это просто говорит вам, что вы можете преобразовать это значение в дату / время.Но что еще хуже: функция может возвращать разные значения для разных платформ: В Microsoft Windows диапазон допустимых дат - с 1 января 100 года по 31 декабря 9999 года нашей эры;диапазоны варьируются в зависимости от операционной системы.
Очевидно, что Excel не проверял содержимое ячейки как дату / время.Это почти наверняка текст, содержащий любые символы, введенные пользователем (как пробел в вашем примере).Возвращение IsDate () говорит вам, что VBA не может преобразовать значение в дату, но, возможно, вы можете, если вы знаете формат (и написать специальную функцию для преобразования).
HTH!
Редактировать Я думаю, что ответ на этот вопрос может вам тоже помочь.