我正在尝试使用.FindNext方法执行do-while循环来查找列中的多个实例。就其本身而言,它运作良好。 然而。当试图在同一个循环中的另一个工作表中找到相应的值时,它会抛出'对象变量或者没有设置块变量'错误(91)。
If Not found_title Is Nothing Then
first_cell_address = found_title.Address
Do
Set found_url = url_lookup.Find(found_title.Offset(0, -4).Value)
Debug.Print ("looped")
Set found_title = title_lookup.FindNext(found_title)
Loop While first_cell_address <> found_title.Address
End If
当我注释掉'set found_url ...'时,它工作正常,但是当包含它时,'found_title'对象在第一次达到while条件时已被设置为空。由于FindNext方法包围了范围,我不明白为什么在必须至少有一个方法首先输入if语句时,为什么没有设置为空。
解决方案:
根据rory的回应,改变是:
Set found_title = title_lookup.Find(title, After:=Range(found_title.Address))
答案 0 :(得分:3)
如果您将一个Find
嵌套在另一个FindNext
中,则无法在外部使用Find
。您必须重复原始After
并将var db = db.getDB(dbname);
参数指定为先前找到的单元格。