VB 中的 VLookup 返回错误 2042,其中工作表中的 VLookup 返回预期



我正在尝试编写一个函数,该函数将根据匹配日期在表中查找值。如果没有匹配项,它将在返回错误之前最多在 7 天前查找。

Option Explicit
Public Function GetWeekEndBalanceFromStatement(lookupDate As Date, statement As Range, column As Integer) As Variant
Dim lookupModifier As Integer
Do While IsError(Application.VLookup(DateAdd("d", lookupModifier, lookupDate), statement, column, False)) And lookupModifier > -7
lookupModifier = lookupModifier - 1
Loop
GetWeekEndBalanceFromStatement = Application.VLookup(DateAdd("d", lookupModifier, lookupDate), statement, column, False)
End Function

当我分解它进行调试时,我遇到的问题是 VLookups 始终返回

错误 2042

即使电子表格中写入的相同VLookup返回值。

编写的函数需要引用,K8 是第一行:

=DATE(2018,1,5)
=VLOOKUP(K8, A:F, 6,FALSE )
=GetWeekEndBalanceFromStatement(K8,A:F,6)

关于我可能做错了什么的任何线索?我尝试将日期封装在 CDate 中,附加 .范围的值,并将日期作为变体引入并访问 .值 2.

运行一些测试后,我记得我在使用VLookupMatch与日期一起使用时遇到的一些问题,最好使用它们的 Excel 值(将Date更改为Double)。

修改的函数代码

Option Explicit
Public Function GetWeekEndBalanceFromStatement(lookupDate As Double, statement As Range, column As Integer) As Variant
Dim lookupModifier As Integer
Do While IsError(Application.VLookup(lookupDate + lookupModifier, statement, column, False)) And lookupModifier > -7
lookupModifier = lookupModifier - 1
Loop
GetWeekEndBalanceFromStatement = Application.VLookup(lookupDate + lookupModifier, statement, column, False)
End Function

最新更新