VB6 ограничить ввод текстового поля числами в диапазоне от 1900 до текущей даты? - PullRequest
0 голосов
/ 17 мая 2018

Как ограничить ввод текстового поля числами в диапазоне от 1900 до текущей даты?

Private Sub txtYear_Change()
    If Not IsNumeric(txtYear.Text) Then
        txtYear.Text = ""
    ElseIf txtYear.Text < 1900 Or txtYear.Text > Year(Date) Then
        txtYear.Text = ""
    End If
Exit Sub 

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Как объяснено в ответе Билла , вам следует использовать событие Validate.

Я просто хотел бы добавить, что в вашем коде все еще есть недостаток, то есть он позволитпользователям вводить десятичные числа (например, 1900.10).Чтобы избежать этого, вы можете добавить еще одно условие:

Private Sub txtYear_Validate(Cancel As Boolean)
    If Not IsNumeric(txtYear.Text) Then
        txtYear.Text = ""
    ElseIf txtYear.Text < 1900 Or txtYear.Text > Year(Date) Then
        txtYear.Text = ""
    ElseIf Fix(txtYear.Text) <> txtYear.Text Then   ' Choose one:
        txtYear.Text = Fix(txtYear.Text)            ' - Replace it with the integer part.
        'txtYear.Text = ""                          ' - Clear the text.
    End If
End Sub
0 голосов
/ 17 мая 2018

Вам нужно поместить этот код в ваше событие txtYear_Validate() вместо события изменения.Изменения будут срабатывать при каждом нажатии клавиши, поэтому они почти всегда будут сразу же терпеть неудачу.Не проверяйте запись, пока она не будет завершена, в событии validate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...