VB6限制文本框输入到1900到当前日期范围内的数字?

时间:2018-05-17 15:28:05

标签: vb6

如何限制文本框输入到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 :(得分:3)

您需要将该代码放在txtYear_Validate()事件中而不是更改事件中。每次击键都会触发更改,因此几乎总会立即失败。在完成验证事件之前,请不要验证条目。

答案 1 :(得分:1)

正如Bill's answer中所述,您应该使用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