如何限制文本框输入到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
答案 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