2016-11-16 79 views
0

我有一点VBA代码使用DateSerial,但它不输出可疑结果。我希望能够解释一下为什么,因为我根本没有期待结果。DateSerial不输出预期日期

我的代码如下所示:

Set rngTestDate = ThisWorkbook.Worksheets("Sheet11").Range("A:A").Find(DateSerial(Year(TheDate1), 1, 1)) 

和输出是这样的:

?rngTestDate 
11/1/2016 
?Year(TheDate1) 
2016 
?DateSerial(Year(TheDate1),1,1) 
1/1/2016 

使用即时窗口,Sheet11没有2016年1月1日在它;但是,它确实有2016年1月4日和2016年11月1日。我完全期待.Find方法查找1/1/2016,如果找不到,请设置为Nothing。如果没有这样做,至少找到下一个可用日期。
为什么.Find方法在2016年1月4日找到2016年11月1日的时候会给出以上DateSerial的值?或者我猜更好的问题是:如果找不到1/1/2016,为什么它不会设置为Nothing

+1

您正在寻找'1/1/2016',并且'11/1/2016'包含它(从第二个字符开始)。 –

+0

哦哇...所以即使我使用'DateSerial',它仍然在寻找包含“1/1/2016”值的最接近的东西,无论日期是否完全匹配?这几乎就像'.Find'将'DateSerial'输出视为一个字符串。 – SalvadorVayshun

回答

0

Per Vincent G的评论,问题是我搜索"1/1/2016""11/1/2016"包含该字符串。无论DateSerial选项如何,它似乎都将日期视为字符串。一旦我完全理解它,就能够解决问题。谢谢,文森特G!