尝试验证日期在数据范围内

时间:2017-07-13 18:19:46

标签: excel vba excel-vba

我正在努力确保我的用户输入格式明确的有效日期和我拥有的给定数据集。如果用户输入了错误的日期,我想提示他或她重新输入有效日期。然后,一旦输入有效日期,我想过滤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

1 个答案:

答案 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