我们在一个工作表中有一个简短的表格,如下所示:
A1到A3单元格中的值是以下公式的结果:
=DATE(1999,12,15)
=DATE(1945,1,18)
=DATE(2020,2,23)
如果我在工作表单元格中尝试使用VLOOKUP()函数:
=VLOOKUP(DATE(1945,1,18),A1:B3,2)
我得到了正确的结果(Moe):
然而在VBA中:
Sub RetrieveName()
Dim d As Date, nam As String, rng As Range
d = DateSerial(1945, 1, 18)
Set rng = Range("A1:B3")
nam = Application.WorksheetFunction.VLookup(d, rng, 2)
MsgBox nam
End Sub
我遇到了一个错误:
目前我们的解决办法是使用:
Sub RetrieveName2()
Dim d As Long, nam As String, rng As Range
d = 16455
Set rng = Range("A1:B3")
nam = Application.WorksheetFunction.VLookup(d, rng, 2)
MsgBox nam
End Sub
我真的看不出原始代码有什么问题?
cdbl(dateserial(1945,1,18))
。不确定原因,但我认为VBA将日期视为字符串,并且从工作表中传入的值是一个数字。 - Scott Craner