我正在努力确保我的用户输入格式明确的有效日期和我拥有的给定数据集。如果用户输入了错误的日期,我想提示他或她重新输入有效日期。然后,一旦输入有效日期,我想过滤A列,以便只显示这些日期。
我目前使用当前代码收到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
答案 0 :(得分:0)
您很可能已将date_entered声明为字符串,因此您在日期内搜索此字符串并且什么也得不到。
尝试使用CDate将其转换为日期:
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