Sam*_*Sam 6 excel vba excel-2007 excel-vba
Set mainWB = Workbooks("Copy Paste.xlsb")
Set mainWS = mainWB.Sheets("Sheet1")
Set testWS = mainWB.Sheets("Sheet3")
mainWS.Select
Run Code Online (Sandbox Code Playgroud)
我一直在Excel VBA的最后一行收到错误:
"方法选择对象'_Worksheet'失败"
知道为什么或如何解决这个问题?谢谢!
正如在注释中所讨论的那样,无法Sheets在VBA中选择不活动的(或Range它们上的对象).
例如以下代码
Sheets(1).Activate
Sheets(2).Range("A1").Select
Run Code Online (Sandbox Code Playgroud)
将导致您收到的错误.
在您的情况下,似乎您正在尝试Select一张未激活的工作表 - 您的mainWS对象可能不是ActiveSheet您调用此代码的时候.测试是否发生这种情况的简单方法是将以下内容添加到代码的末尾:
if (ActiveSheet.Name <> mainWS.Name) then
msgbox ("Going to crash after clicking ok!")
end if
mainWS.Select
Run Code Online (Sandbox Code Playgroud)
请注意,您可以使用命令引用激活的工作表ActiveSheet来获取属性或您有兴趣执行的任何其他操作.
如果您通过工作簿中的所有工作表进行循环工作并且存在隐藏工作表,则也会发生此错误.留意那个.
最后,与您的特定错误消息无关,我假设您在某处声明了这些变量,并且根本没有将它们复制到此处 - 如果不是我会考虑使用,Option Explicit因为您可以经常遇到各种问题而无需Option Explicit在VBA的顶部码.