使用Application.Match()查找Date()

时间:2018-07-20 11:50:30

标签: excel vba excel-vba

我试图连续查找今天的日期(我使用VBA Date来获取今天的日期),但是Application.Match找不到任何东西。

我正在使用的代码是这样:

Debug.Print Application.WorksheetFunction.Match(Date, Range("5:5"), 0)

第5行中的日期是由公式生成的,因此我必须搜索值。

4 个答案:

答案 0 :(得分:2)

这实际上取决于您如何传递日期。通常,在.Match()中,最好的方法是查找特定的数字:

Public Sub TestMe()

    Range("E5") = Clng(Date)
    Debug.Print Application.Match(Clng(Date), Range("5:5"), 0)

    Range("E5") = ""
    Range("C5") = Clng(Date)
    Debug.Print Application.Match(Clng(Date), Range("5:5"), 0)

End Sub

有时候Excel中的日期系统表现得有些奇怪:

答案 1 :(得分:0)

将您的日期转换为Long:

Debug.Print Application.WorksheetFunction.Match(CLng(Date), Range("5:5"), 0)

答案 2 :(得分:0)

您不能将MATCH()与这样的VBA日期一起使用。而是使用Long

Sub INeedADate()
    MsgBox Application.WorksheetFunction.Match(CLng(Date), Range("5:5"), 0)
End Sub

enter image description here

以上是MATCH()工作表使用和VBA使用的示例。

答案 3 :(得分:0)

不要使用Match()来比较日期,它仅用于字符串。

您可以使用函数Year()Month()Day():如果年,月和日相等,则日期相等。