日期验证:在文本框中设置最小和最大日期

时间:2012-08-15 10:12:56

标签: validation vba date excel-vba excel

我的VBA代码中有一个函数,它为文本框设置了特定的日期格式。

这是我验证日期格式正确的代码:

Function CheckDate(DateStg As String) As Boolean

If DateStg = "" Then
  ' Accept an empty value in case user has accidentally moved to a new row
  CheckDate = True
  lblMessage.Caption = ""
  Exit Function
End If

If IsDate(DateStg) Then
  CheckDate = True
  lblMessage.Caption = ""
Else
  CheckDate = False
  lblMessage.Caption = "Sorry I am unable to recognise " & DateStg & " as a date."
End If

End Function

除了检查文本框中的日期是否是实际日期之外,我还需要验证文本框日期是否不小于当前日期减去1个月,并且。此外,我想验证日期不超过当前日期加1年。

所以:

  • DateStg>今天 - 1个月
  • DateStg<今天+ 1年

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

您可以使用一些功能:

''Assume date is not good
DateOK=False
If IsDate(DateStg) Then
     If DateStg > dateAdd("m",-1,Date()) _
         And DateStg < dateAdd("m",12,Date()) Then
        ''Date is good
        DateOK=True
     End If
End if

在大多数情况下,文本框可以设置为仅接受日期,您可以设置验证规则以检查范围,因此可能不需要代码。

答案 1 :(得分:1)

如果您只想查看日期,可以使用DateAdd函数获取要比较的日期:

'Subtract a month from today and return it as a string
Format(DateAdd("m", -1, Now), "yyyy-mm-dd")

'Add a year to today and return it as a string
Format(DateAdd("yyyy", 1, Now), "yyyy-mm-dd")