使用Cells.Find并隐藏窗口时出现错误91

时间:2016-12-01 17:18:27

标签: excel vba excel-vba

请完整阅读并理解此程序运行正常,直到我改变了隐藏工作簿的方式。

我有一个程序在我使用Application.Visible = False并且只显示用户表单时运行良好。我开始意识到这会隐藏所有Excel窗口,而不仅仅是我正在使用的窗口。这将分发到整个部门,隐藏所有Excel窗口是不可接受的。

我开始使用ActiveWindow.Visible = False,但是当我在工作表中搜索值(Cells.Find)时,我现在收到错误91.

修改工作表不是一个选项,我正在搜索的值可以在工作表中移动,具体取决于添加或删除的内容。

出于这个原因,

Cells.Find非常出色。我需要找到另一种搜索页面的方法,或者找到隐藏工作表的另一种方法。请帮忙

1 个答案:

答案 0 :(得分:3)

当窗口不可见时,Cells引用不符合工作表对象(除非合格,Cells引用ActiveSheet.Cells且没有ActiveSheet) ,所以你可以这样做:

Sheets("sheetname").Cells.Find ' modifying "sheetname" as needed

这也可能失败(出现相同的错误),或者如果有其他打开的工作簿,也可能产生错误的结果,因此最好完全符合工作簿的资格,例如:

Workbooks("workbookname").Sheets("sheetname").Cells.Find(...

根据以下答案,在对可能Find的对象执行其他方法/属性调用之前,测试Nothing的结果仍然是个好主意:

Find command giving error: "Run-time Error '91': Object variable or With block variable not set"