我有一个表(让我们称之为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)
字符串
现在,每当我使用date作为搜索参数时,都会出现运行时错误91或类似错误
我曾尝试将日期类型转换为长类型(甚至格式化它),但在搜索中没有成功
1条答案
按热度按时间mec1mxoz1#
如果没有找到匹配,
Range.Find()
的返回值将是Nothing
(https://learn.microsoft.com/en-us/office/vba/api/excel.range.find)-在这种情况下,表达式Find(v1).Row
等效于Nothing.Row
,这将导致错误91(由于Object变量未设置)如果您正在搜索的值不存在,则
Find(v1)
将返回Nothing
,从而导致错误要解决这个问题,您必须检查返回值是否为Nothing,如果不是,则只继续获取行
字符串