我试图连续查找今天的日期(我使用VBA Date来获取今天的日期),但是Application.Match找不到任何东西。
我正在使用的代码是这样:
Debug.Print Application.WorksheetFunction.Match(Date, Range("5:5"), 0)
第5行中的日期是由公式生成的,因此我必须搜索值。
答案 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
以上是MATCH()
工作表使用和VBA使用的示例。
答案 3 :(得分:0)
不要使用Match()
来比较日期,它仅用于字符串。
您可以使用函数Year()
,Month()
和Day()
:如果年,月和日相等,则日期相等。