On Error Resume Next
r=(Format(CDate(s), "dd.mm.yyyy") = s)
If Err.Number = 0 and r Then 'это таки дата
Oxygen писал(а):Она считает датами все, что к датам можно преобразовать.
2Dummiel В твоем случае IsDate узрела во втором варианте дату в американском формате.
tyomitch писал(а):Как и про 13/12/2006, которая совсем в неведомом формате.
MSDN писал(а):Any expression that can be interpreted as a date, including date literals, numbers that look like dates, strings that look like dates, and dates returned from functions. A date expression is limited to numbers or strings, in any combination, that can represent a date from January 1, 100 – December 31, 9999.
uhm писал(а):На всякий случай - автору топика IsDate, видимо, подойдет. Но в общем случае эта функция считает датами некоторые весьма сомнительные строки, например, IsDate("12.31")=True (и IsDate("31.12")=True).
Ну так если пользователь в поле для даты ввел "одну целую, одну десятую", то это смело можно рассматривать как первое января. Иначе, если он введет в поле для даты 05.05.2005, то он скажет, что он хотел ввести не пятое мая, а Пункт 05.05... и тут уж никакая IsDate не поможет.uhm писал(а):Для некоторых случаев - "1.1" - это не "первое января текущего года", а "одна целая одна десятая" Или даже "пункт 1.1".
uhm писал(а):Не спорю Но пользователь - это не единственное "устройство ввода"...
Сейчас этот форум просматривают: Google-бот, Mail.ru [бот] и гости: 42