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"
有什么想法可以解决这个问题吗?谢谢!
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
会导致您收到的错误。
在您的情况下,似乎您正在尝试选择一个未激活的工作表 - 您的mainWS
对象在调用此代码时可能不是ActiveSheet
。测试是否发生这种情况的简单方法是,如果您将以下内容添加到代码末尾:
if (ActiveSheet.Name <> mainWS.Name) then
msgbox ("Going to crash after clicking ok!")
end if
mainWS.Select
请注意,您可以使用命令ActiveSheet
引用已激活的工作表以获取属性或进行其他感兴趣的操作。
如果有循环遍历工作簿中的所有工作表,并且存在隐藏的工作表,则也可能会发生此错误。要注意这一点。
最后,与您特定的错误消息无关,我假设您在某个地方声明了这些变量,只是没有将它们复制到这里 - 如果没有,请考虑在您的 VBA 代码顶部使用Option Explicit
,因为没有Option Explicit
常常会遇到各种问题。
虽然我同意上述观点,但也需要注意,如果工作表的可见性当前设置为xlSheetVeryHidden,则删除功能将无法工作。
.Select
:) 请参阅此链接https://dev59.com/3Ggv5IYBdhLWcg3wSe0f - Siddharth Rout