Страницы: 1
RSS
VBA. UserForm. Контроль ввода даты в TextBox
 
Добрый день!

У меня на форме есть TextBox куда необходимо вводить только дату в формате 01.01.2000 как можно сделать шаблон ввода и проверить корректность ввода даты пользователем?
 
Цитата
eagl69: как можно сделать шаблон ввода
отдельными окошками для года, месяца и дня, например. ХЗ, что вы имеете ввиду под "шаблоном"
Цитата
eagl69: проверить корректность ввода даты
объявить переменную даты присвоить ей полученную текстовую строку (возможно придётся преобразовать её), если ошибка, значит неправильно ввёл. Если сделать окошки, как я выше сказал, то ещё проще
Цитата
vikttur: Уточните название тем
VBA. UserForm. Контроль ввода даты пользователем в TextBox
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал: Контроль ввода даты пользователем в TextBox
Тесно ему там, наверное :)
 
Цитата
vikttur написал:
Тесно ему там, наверное
Off; Это смотря какой пользователь. Маленькие (по 3) в TextBox могут поместиться, а большие (по 5) и на лист могут не войти :) .Вот вчера были маленькие (но по 3), те входят :D  А по пять - не входят, ну о-очень большие :D Прошу прощения у ТС-а, всей молодежи и модераторов, это могли видеть только те, у кого был черно-белый телевизор :)
 
Цитата
_Igor_61: это могли видеть только те, у кого был черно-белый телевизор
тогда я для вас целый мир открою
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
if IsDate
CDate

Зачем шаблоны? Быстро и удобно набирать, мне например, 5/5 - будет 5 мая текущего.
ps Или даже кастомом - одно введённое число доводить до этого числа текущего месяца-года, например.

Код
    Dim Request$, DATEX as Date
    Do
        Request = InputBox("Допустимые форматы:" & vbLf & "Д М Г" & vbTab & "Д/М/Г" & vbTab & "Д.М.Г" & vbTab & "Д,М,Г" & vbTab & "Д-М-Г" & vbLf & vbLf & _
                           "Год и месяц можно опускать:" & vbLf & "Д М" & vbTab & "Д/М" & vbTab & "Д.М" & vbTab & "Д,М" & vbTab & "Д-М" & vbTab & "Д", "Введите дату суток X-1", Format(IIf(Hour(Now) < 8 Or Hour(Now) > 22, Date, Date + 1), "D.MM.YY"))
        If Request = "" Then
            Call CloseThisWorkbookCorrect
        ElseIf IsDate(Request) Then
            DATEX = Request
            If DATEX > DateSerial(1917, 11, 7) Then Exit Do Else Call CloseThisWorkbookCorrect
        ElseIf Val(Request) > 0 And Val(Request) < 32 Then
            DATEX = DateSerial(Year(Date), IIf(Day(Date) > 26, Month(Date) + 1, Month(Date)), Val(Request))
            Exit Do
        End If
    Loop
    DATEX = Int(DATEX)
Изменено: vladjuha - 10.11.2020 19:19:27
 
eagl69, используйте для ввода календарь и форматируйте, как душе угодно.
 
Цитата
Jack Famous написал:
тогда я для вас  целый мир открою
Off: (да простят меня малыш и котенок за выдержку из статьи в #6) - я жил в этом мире с самого  рождения
Цитата
Советские люди логики не знали, потому жили в вечности, а не во времени
Поэтому они оставляли ключи под ковриком, зная что квартиру не обворуют, знали что в ближайшей аптеке есть парацетамол и аспирин, и что за работу заплатят (пусть меньше, чем хотелось бы, но знали, что ты нужен и твоя работа будет как-то оплачена). А так да, согласен - по логике выживает сильнейший. А Вы были бы согласны с тем, что по логике именно Вы именно в данный момент времени должны покинуть эту жизнь (это круто, пусть - будете просто уволены), т.к. Вася или Федя в данный момент по логике гораздо полезней для времени, а Вы полезней для вечности?   ;)
 
Контроль ввода данных
Страницы: 1
Наверх