2009-07-16 6 views
1

У меня есть две проверки для даты и времени, как показано ниже в текстовых полях:VBA ввода текста маска

00/00\ 00:00;0;0;_ 

Он будет принимать (дд/мм чч: мм) и работает отлично

Но иногда я поставил

34/34 56:78 он будет принимать, но это не должно

Дата sholdnot выходят за рамки 31, месяц 12 раз 24 и 59 минут

Пожалуйста, помогите

+0

Является ли это моментом даты или продолжительностью, например. как насчет того, если они войдут в 31/02, и вы обнаружите, что не можете конвертировать его до 31 февраля в течение любого года? – onedaywhen

ответ

0

проверить дату с помощью IsDate()

Public Function ValidateDate(input As String) As Boolean  

    ValidateDate = IsDate(input) 

End Function 

это возвращает логическое значение, True, если вход является действительной строкой даты, Ложная, если это не так. Максимальные значения

день: 31

месяц: 12

час: 23

Мин: 59

Sec: 59

+0

Извините, я редактировал свой вопрос; это маска ввода, а не проверка – 2009-07-16 06:09:04

+0

- это маска ввода в поле таблицы или текстовое поле в форме? Вам все равно понадобится какая-то форма проверки в форме и может поместить эту функцию в событие On Exit –

+0

Спасибо за ответ; Мне нужна только маска ввода без проверки Можно ли ограничить это маской ввода? – 2009-07-16 06:20:03

0

ввода маски в Доступ не может быть ограничен диапазонами значений, например, с помощью RegExp. Единственный способ сделать это - использовать некоторую проверку (которая может быть сделана при нажатии клавиши, если вы хотите).

0

Подходите к проблеме по-разному. Дайте пользователю календарь для выбора. Вы можете использовать что-то вроде Allen Browne's Popup Calendar

Отключить и заблокировать текстовое поле, и вы можете гарантировать правильность формата.

1

Вчера я столкнулся с этой проблемой с полем даты истечения срока действия кредитной карты. Я глупо изменил 00/0000 в качестве маски ввода на 00/00 и столкнулся с проблемой, с которой вы столкнулись. проблема в том, что если вторая пара цифр является действительной датой, она будет интерпретироваться как дата, и текущий год будет предоставлен молчаливо. Таким образом, если вы ввели:

06/09 

за июнь 2009 года, он будет сохранен как:

06/09/2009 

С другой стороны, если вы вводите:

06/34 

будет интерпретировано как

06/01/1934 

Насколько я вижу, единственный способ сделать то, что вы хотите, - использовать 4-значный год.

Смежные вопросы