试图validationdate是在数据范围内

我试图确保我的用户input一个有效的date格式明智和给定的数据集,我有。 如果用户input了错误的date,我想提示他或她重新input一个有效的date。 然后,一旦input有效的date,我想过滤列A,所以这些date显示。

我目前正在得到我有当前的代码1004错误。

Sub date_entered_exit(ByVal Cancel As MSForms.ReturnBoolean) If Not IsDate(date_entered) Then MsgBox "Input must be a date in the format: 'dd/mm/yyyy'" Cancel = True Else date_entered = Format(date_entered, "dd/mm/yyyy") If Not date_entered = Range("A").Find(what:=date_entered) Then MsgBox "Input a date within the range" Else WholeSheetRange.AutoFilter Field:=1, Criteria1:="=date_entered" End If End If End Sub 

你最有可能已经声明date_entered作为string,因此,你正在date内search这个string,你什么也得不到。

尝试使用CDate将其转换为date:

 If Not CDate(date_entered) = Range("A").Find(what:=CDate(date_entered)) Then 

编辑:

这与你的代码有很大的不同,但它应该给你一个想法,你可以做到这一点:

 Sub date_entered_exit(ByVal Cancel As MSForms.ReturnBoolean) Dim Rng As Range Dim date_entered As Date 'date_entered = "13/07/2017" date_entered = Format(date_entered, "dd/mm/yyyy") If Not IsDate(date_entered) Then MsgBox "Input must be a date in the format: 'dd/mm/yyyy'" Cancel = True Exit Sub End If Set Rng = Range("A:A").Find(date_entered) If Rng Is Nothing Then MsgBox "Input a date within the range" Else WholeSheetRange.AutoFilter Field:=1, Criteria1:="=date_entered" End If End Sub