Set mainWB = Workbooks("Copy Paste.xlsb")
Set mainWS = mainWB.Sheets("Sheet1")
Set testWS = mainWB.Sheets("Sheet3")
mainWS.Select
我在 Excel VBA 的最后一行不断收到错误:
"Method Select of Object '_Worksheet' failed"
知道为什么或如何解决这个问题吗?谢谢!
最佳答案
正如评论中所讨论的,无法在 VBA 中选择不活动的 Sheets
(或其上的 Range
对象)。
例如下面的代码
Sheets(1).Activate
Sheets(2).Range("A1").Select
将导致您收到错误。
在您的情况下,您似乎正在尝试Select
一个不活动的工作表 - 您的mainWS
对象可能不是ActiveSheet
当你调用这段代码时。测试是否发生这种情况的一个简单方法是将以下内容添加到代码末尾:
if (ActiveSheet.Name <> mainWS.Name) then
msgbox ("Going to crash after clicking ok!")
end if
mainWS.Select
请注意,您可以使用命令 ActiveSheet
引用激活的工作表来获取属性或您感兴趣的任何其他操作。
如果您循环处理工作簿中的所有工作表并且存在隐藏工作表,也可能会发生此错误。留意这一点。
<小时/>最后,与您的具体错误消息无关,我假设您在某处声明这些变量,并且只是没有将它们复制到此处 - 如果不是,我会考虑使用 Option Explicit
因为您经常会遇到无需在 VBA 代码顶部添加 Option Explicit
即可解决各种问题。
关于vba - 对象 '_Worksheet' 的方法选择失败 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12697980/