在vba中调用工作表函数Lookup查找日期时报错的原因分析和解决办法

如下图所示:

在vba中调用excel工作表函数Lookup,会显示如上图所示的错误提示。

在excel工作表函数中可以直接使用Lookup函数是没问题的,但是在vba中调用时却不行,由于在vba中,没有办法自动把日期型数据直接转换为数值型数据,所以导致出错。

这时候可以使用Clng函数先将日期型数据转换为日期序号,再在vba中调用excel工作表函数Lookup,最后将返回的结果用CDate函数转换为日期型数据。

代码如下:

Sub QQ1722187970()
    Dim arr()
    For i = 0 To 20
        ReDim Preserve arr(i)
        arr(i) = VBA.CLng(VBA.DateAdd("yyyy", i, Date))
    Next i
    dDate = VBA.CLng(#12/1/2022#)
    MsgBox VBA.CDate(Excel.Application.WorksheetFunction.Lookup(dDate, arr))
End Sub
       

发表评论