方法select对象'_Worksheet'失败 – 为什么?

Set mainWB = Workbooks("Copy Paste.xlsb") Set mainWS = mainWB.Sheets("Sheet1") Set testWS = mainWB.Sheets("Sheet3") mainWS.Select 

我在Excel VBA的最后一行不断收到错误:

“对象的方法select”_Worksheet“失败”

任何想法为什么或如何解决这个问题? 谢谢!

如注释中所述,无法在VBA中select不活动的Sheets (或其上的Range对象)。

例如下面的代码

 Sheets(1).Activate Sheets(2).Range("A1").Select 

会导致你收到的错误。

在你的情况,似乎你正在尝试Select一个不活动的工作表 – 你的mainWS对象大概不是你调用这个代码的点上的ActiveSheet 。 testing这种情况的简单方法是将以下内容添加到代码的末尾:

 if (ActiveSheet.Name <> mainWS.Name) then msgbox ("Going to crash after clicking ok!") end if mainWS.Select 

请注意,您可以使用ActiveSheet命令引用已激活的工作表,以获取属性或其他您感兴趣的操作。

如果您通过工作簿中的所有工作表进行循环工作并且存在隐藏工作表,也会发生此错误。 了解这一点。


最后,和你的具体错误信息无关,我假设你是在某处声明这些variables,而不是在这里复制它们 – 如果没有,我会考虑使用Option Explicit因为你经常会遇到各种各样的问题而没有Option Explicit你的VBA代码的顶部。

尽pipe我同意上面的说法,但是还要注意,如果工作表的可见性当前设置为xlSheetVeryHidden,则Delete函数将不起作用