запретить пользователю вводить предыдущую дату в форме пользователя - PullRequest
0 голосов
/ 10 июля 2020

Я связываю, чтобы запретить пользователю вводить дату вступления в силу, предшествующую сегодняшней дате, в текстовом поле вверху пользовательской формы.

лог c здесь кажется подходящим, но я получаю msgbox, даже если дата позже сегодняшней даты.

Private Sub txtEffective_Date_Change()
    If IsDate(txtEffective_Date) Then
        If cdate(txtEffective_Date) < Date Then
            MsgBox "Date chosen is prior to today's date"
        End If
    End If
End Sub

Я полагаю, это как-то связано с cdate против date, но не совсем уверен, что здесь не так.

события, которые я вижу в редакторе кода

Ответы [ 2 ]

1 голос
/ 10 июля 2020

Для любого, кто пытается сделать это при изменении события. Прежде чем проводить сравнение, вам необходимо убедиться, что ваша дата верна. например, ввод 5/5 станет 5 мая 2020 года на CDate. Подождите, пока ввод будет правильным, а затем сравните.

Private Sub TextBox1_Change()
    Dim sDate As String
        
    If TextBox1.Text Like "??[/-]??[/-]????" Or _
        TextBox1.Text Like "?[/-]?[/-]????" Or _
        TextBox1.Text Like "?[/-]??[/-]????" Or _
        TextBox1.Text Like "??[/-]?[/-]????" Then
        
        sDate = Format(CDate(TextBox1.Text), "dd/MMM/YYYY")
    Else
        Exit Sub
    End If
    
    If IsDate(sDate) Then
        If CDate(sDate) < Date Then
            MsgBox "Previous date is not allowed...." + sDate
        End If
    End If
End Sub
0 голосов
/ 10 июля 2020

Событие изменения запускается при каждом нажатии клавиши, вызывая проблему, с которой вы столкнулись. Просто переместите этот код в другое событие, например LostFocus или Validate, и все будет в порядке.

Изменить: поскольку это VBA, а не VB6, попробуйте событие Exit.

...