【发布时间】:2018-07-12 18:30:44
【问题描述】:
我的工作簿有问题,一旦打开工作簿就会运行一个子例程。仅当第一次下载并运行工作簿时才会出现此问题。我已经设法通过在 ThisWorkbook -> Workbook Open 中有一个包含以下代码的工作簿来简化问题:
Private Sub Workbook_Open()
Sheet3.Activate
End Sub
显示的错误是“对象'_worksheets'的方法'激活'失败”,在我的原始程序中(没有简化,也没有在这里写,因为它很广泛)错误是不同的。
如何重现错误:
上传工作簿 -> 下载工作簿 -> 运行工作簿 -> 询问时启用内容(宏) -> 工作簿打开并运行 sheet3.activate -> 我收到错误 -> 关闭工作簿 -> 打开工作簿(没有错误,表 3激活) -> 打开工作簿时永远不会出错 -> 上传工作簿 -> 下载并运行工作簿 -> ...再次出错
就好像子例程在第一次设置工作簿时中断了 Excel,因此没有设置为激活工作表。
我真的很想有一个带有启动宏(显示用户窗体、隐藏 Excel)的工作工作簿,我可以发送给其他人而不会遇到错误。
有没有办法解决这个问题?
编辑:程序中没有其他代码。只有我写的。
编辑2:这可能指向罪魁祸首:当我下载后第一次运行工作簿时,会弹出错误,当错误出现时,我可以在Windows任务栏上看到工作簿的两个实例,一个名称后带有 [Protected view] 的。就好像子例程在工作簿从保护状态变为正常之前运行(在单击启用内容之后......)。如果这有任何意义。
【问题讨论】:
-
该行应该是 Sheets("Sheet3").Activate
-
@RicardoA 如果 OP 指的是
CodeName,则不是 -
我不确定,DoEvent 函数可能对你有用。 Sheet3.Activate 不是标准做法。你应该使用 ActiveWorkbook.Activate ActiveWorkbook.Sheets(3).Activate DoEvent
-
如果我使用 ActiveWorkbook.Activate,我会收到以下错误:“运行时错误 '91':对象变量或未设置块变量”,调试器指向 ActiveWorkbook.Activate。同样,这只发生在我下载后第一次打开工作簿时。之后它工作得很好。在 OP 中写了一些可能有帮助的东西。
-
我也有这个问题。如果文件在下载并允许编辑后打开,则在 Workbook_Open() 中的任何活动工作簿代码中都会出现错误,因为它认为工作簿未处于活动状态。只有在它发生错误时退出工作簿并重新启动它才能正常工作。任何想法