VBA .FindNext在循环中设置其他对象失败

时间:2017-10-31 12:47:36

标签: vba excel-vba do-while excel

我正在尝试使用.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))

1 个答案:

答案 0 :(得分:3)

如果您将一个Find嵌套在另一个FindNext中,则无法在外部使用Find。您必须重复原始After并将var db = db.getDB(dbname);参数指定为先前找到的单元格。