2016-11-16 57 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!