Vba 使用单元格时出现错误91。查找时隐藏窗口

Vba 使用单元格时出现错误91。查找时隐藏窗口,vba,excel,Vba,Excel,请仔细阅读此文件,并了解在我改变隐藏工作簿的方式之前,此程序运行良好 当我使用Application.Visible=False并且只显示用户表单时,我有一个运行良好的程序。我逐渐意识到,这将隐藏所有Excel窗口,而不仅仅是我正在使用的那个。这将分发到整个部门,隐藏所有Excel窗口是不可接受的 我开始使用ActiveWindow.Visible=False,但现在每当我在工作表中搜索值(Cells.Find)时,就会出现错误91 修改工作表不是一个选项,我正在搜索的值可以根据添加或删除的内容

请仔细阅读此文件,并了解在我改变隐藏工作簿的方式之前,此程序运行良好

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

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

修改工作表不是一个选项,我正在搜索的值可以根据添加或删除的内容在工作表中移动


Cells.Find
正是因为这个原因,它的效果非常好。我需要找到另一种方法来搜索页面,或者找到另一种方法来隐藏工作表。当窗口不可见时,请提供帮助,
单元格
引用未限定为工作表对象(除非限定,
单元格
指的是
ActiveSheet.Cells
,并且没有
ActiveSheet
),因此您可以执行以下操作:

Sheets("sheetname").Cells.Find ' modifying "sheetname" as needed
这也可能会失败(出现相同的错误),或者如果有其他打开的工作簿,也可能产生不正确的结果,因此最好完全符合工作簿的条件,例如:

Workbooks("workbookname").Sheets("sheetname").Cells.Find(...
根据以下回答,在对可能是
的对象执行其他方法/属性调用之前,测试
查找
的结果仍然是一个好主意:


当窗口不可见时,
单元格
引用不符合工作表对象的条件(除非符合条件,
单元格
指的是
ActiveSheet.Cells
,并且没有
ActiveSheet
),因此您可以执行以下操作:

Sheets("sheetname").Cells.Find ' modifying "sheetname" as needed
这也可能会失败(出现相同的错误),或者如果有其他打开的工作簿,也可能产生不正确的结果,因此最好完全符合工作簿的条件,例如:

Workbooks("workbookname").Sheets("sheetname").Cells.Find(...
根据以下回答,在对可能是
的对象执行其他方法/属性调用之前,测试
查找
的结果仍然是一个好主意:


查看引发错误的确切代码,并实际表达一个问题,可能会有所帮助。你描述了一个问题,而不是问了一个具体的问题。我的意思是没有设置一个变量-正如@Mat'sMug提到的,你能发布你的代码吗?然后,让我们知道哪一行抛出了错误。好了,窗口的可见性不应该真正影响VBA找到值。好了。阅读David提供的链接。当
Find
没有找到任何内容时,它将返回
Nothing
。您不能在
Nothing
上调用
.AddressLocal
。当窗口不可见时,
单元格
引用不符合工作表对象的条件(除非符合条件,
单元格
引用
活动表。单元格
并且没有
活动表
),因此您可以像
工作表(“sheetname”).Cells。查找
根据需要修改“sheetname”。可能还需要符合工作簿的要求,例如,
工作簿(“工作簿名”).sheetname(“sheetname”).Cells.Find(…
这可能有助于查看引发错误的确切代码,并实际表达一个问题。您描述了一个问题,而不是问了一个特定的问题。我的意思是没有设置变量-正如@Mat'sMug所提到的,您可以发布您的代码吗?然后,让我们知道哪行引发了错误。好了,窗口的可见性应该“这并不真正影响VBA查找值的能力。现在开始。请阅读David提供的链接。当
find
未找到任何内容时,它将返回
Nothing
。您不能在
Nothing
上调用
.AddressLocal
。当窗口不可见时,
单元格
引用不符合工作表对象的条件。”(除非符合条件,
Cells
指的是
ActiveSheet.Cells
,并且没有
ActiveSheet
),因此您可以像
sheetname.Cells.Find一样根据需要修改“sheetname”。可能还需要符合工作簿的条件,例如
Workbooks(“workbookname”).sheetname(“sheetname”).Cells.Find(…
Nice,这是限定
单元格
范围
调用的另一个很好的理由。感谢您的帮助。当我指定工作簿和工作表时,它似乎起作用。不幸的是,我有很多行要做这些更改,而且我做了很多。看起来我今晚要工作到很晚。明天将发布完整版。@Kaptain_Kraken您可能想尝试最新的2.0.9预发行版。它可能会在退出时使主机崩溃(我们正在努力解决这个问题,一旦我们解决了这些拆卸问题,就会发布绿色版本),但是有一个代码检查,可以为您定位所有对
ActiveWorkbook
ActiveSheet
的隐式引用。很好,还有一个很好的理由来限定
单元格
范围
调用。感谢您的帮助。当我指定工作簿和工作表时,它似乎起作用。不幸的是,我还有很多行要做为了进行这些更改,我做了很多。看起来我今晚要工作到很晚。明天将发布完整版本。@Kaptain_Kraken您可能想尝试最新的2.0.9预发行版。它可能会在退出时使主机崩溃(我们正在努力修复,一旦修复这些撕裂问题,将立即发布绿色版本),但有一个代码检查,可以为您定位对
ActiveWorkbook
ActiveSheet
的所有隐式引用。