我有下面的代码,由于某种原因,匹配功能未返回行号。匹配的目的是在联系表,列ID中找到行号,并在索引中使用该行号,并从“联系表”,“列上次审阅”中获取数据(日期)。数据流是这样的:
现在,当程序运行时,此处的match函数永远不会在IDNum列中找到匹配项。如果我输入Match excel函数,则效果很好。该函数是这样的:INDEX(Contact [Last Review],MATCH(B7,Contact [ID],0),0)。 B7是VBA代码中的IDNum。
我认为也许表中的数据或如何定义变量可能是一个问题,但这很奇怪,因为IDNum中的数据与最初从Contact表中提取的数据相同。
excel文档上的数据为常规格式。 IDNum在VBA代码中定义为字符串,并且是全局变量。 IDNum变量提取正确的信息。
是否还有其他方法可以检查变量IDNum中的数据是否与Match所要查找的数据集不同?如何检查match函数中的表列是否正确?我还有什么其他东西可以尝试解决这个问题?
Private Function TryGetRevisionDate(ByVal ID As String, ByRef outResult As Date) As Boolean
On Error GoTo CleanFail
With Application.WorksheetFunction
Dim matchRow As Long
matchRow = .Match(IDNum, Contact.ListColumns("ID").DataBodyRange, 0)
Dim indexValue As Variant
indexValue = .Index(Contact.ListColumns("Last Review").DataBodyRange, matchRow)
End With
If IsDate(indexValue) Then outResult = indexValue
TryGetRevisionDate = True
CleanExit:
Exit Function
CleanFail:
'lookup failed
Resume CleanExit
End Function