vba - 对象 '_Worksheet' 的方法选择失败 - 为什么?

标签 vba excel excel-2007

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/

相关文章:

VBA:如何同时引用两个工作簿中的单元格

vba - 根据工作表更改运行宏(单元格包含公式)

vba - 我正在尝试创建一个宏,将 IMDB.com 的评分和总评论提取到一个 excel 文件中

excel - Sumif 与移动 sumrange

excel - 如何按月份名称过滤excel列?

javascript - JS : Create report on Node. js

excel - 直接在单元格中获取单词翻译

excel - 如何将 Excel 工作表中的文本和图表复制到 Outlook 正文?

excel - 何时应使用 xlsm 或 xlsb 格式?

vba - 使用 VBA 复制大文件大小的范围