Set mainWB = Workbooks("Copy Paste.xlsb")
Set mainWS = mainWB.Sheets("Sheet1")
Set testWS = mainWB.Sheets("Sheet3")
mainWS.Select
我在 Excel VBA 的最后一行不断收到错误消息:
“对象'_Worksheet'的方法选择失败”
知道为什么或如何解决这个问题吗?谢谢!
Set mainWB = Workbooks("Copy Paste.xlsb")
Set mainWS = mainWB.Sheets("Sheet1")
Set testWS = mainWB.Sheets("Sheet3")
mainWS.Select
我在 Excel VBA 的最后一行不断收到错误消息:
“对象'_Worksheet'的方法选择失败”
知道为什么或如何解决这个问题吗?谢谢!
正如评论中所讨论的,不能Sheets
在 VBA 中选择不活动的(或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
,因为您经常会遇到各种问题而无需Option Explicit
在您的 VBA 顶部代码。
虽然我同意上述观点,但同样重要的是要注意,如果工作表的可见性当前设置为 xlSheetVeryHidden,则删除功能将不起作用
我遇到了同样的问题,并查看了这篇文章以获取有关如何解决它的想法。通过在我的代码失败的行上使用“激活”而不是“选择”来解决我的问题。因此,不要使用“mainWS.Select”,而是尝试使用“mainWS.Activate”。