
Excel VBA中的Date類型的匹配問題
VBA的Date類型比較奇怪。
測試:
1. 新建一個(gè)空白的Excel文檔,在A1單元格輸入2009-11-12。
2. 打開VBA器,插入模塊,增加下面這個(gè)宏
Sub test()MsgBox #11/12/2009# = Range("A1").Value ' trueMsgBox VarType(#11/12/2009#) = VarType(Range("A1").Value) ' trueMsgBox Application.WorksheetFunction.Match(#11/12/2009#, Range("A1"), 0) ' errorEnd Sub
3. 按F5運(yùn)行test宏,可以看到Range("A1")的類型和值都和#11/12/2009#一致(通過對range("A1")的監(jiān)視也可以看出這一點(diǎn)),都是Date類型,但是如果用match去匹配的話,卻出現(xiàn)錯(cuò)誤。
解決方法,在匹配中將要匹配的Date類型的數(shù)據(jù)強(qiáng)制轉(zhuǎn)換成Long類型去匹配。
MsgBox Application.WorksheetFunction.Match(CLng(#11/12/2009#), Range("A1"), 0)
對其原理還是不清楚,不知道有沒有看到的高手來做一下解釋。

