提问人:felipe kreft batista 提问时间:11/7/2023 最后编辑:braXfelipe kreft batista 更新时间:11/7/2023 访问量:32
以日期为参数的 Range.find
Range.find with date as argument
问:
我有一个具有日期列的表(我们称之为 tb1)。
我需要使用 tb1_date 作为键在 tb2(上面有日期)中搜索,并且它必须返回相同日期所在的 tb2 行号
for i = 1 to tb1_length
v1 = range("A" & i).value 'date from tb1, i is just a random row
msgbox range("D1:D20").find(v1).row 'search for the row number in tb2 (say its D1:D20)
现在,每当我使用日期作为搜索参数时,这都会让我收到运行时错误 91 或类似错误
我尝试将日期类型转换为长类型(甚至格式化),但搜索没有成功
答:
3赞
Lord-JulianXLII
11/7/2023
#1
如果未找到匹配项,则 的返回值将为 (https://learn.microsoft.com/en-us/office/vba/api/excel.range.find) - 在这种情况下,表达式等效于 ,这将导致错误 91(因为未设置 Object 变量)Range.Find()
Nothing
Find(v1).Row
Nothing.Row
如果您要搜索的值不存在,则将返回,从而导致错误Find(v1)
Nothing
要解决这个问题,你必须检查你的返回是否是 Nothing,如果不是,则只继续获取该行
Dim match As Range
Set match = Range("D1:D20").Find(v1)
If Not match Is Nothing Then
MsgBox (match.Row)
End If
评论