VBA错误424调用工作簿中的子对象时需要对象\u打开

VBA错误424调用工作簿中的子对象时需要对象\u打开,vba,excel,Vba,Excel,我对vba很陌生。打开文档时,我遇到424 Ojbect必需错误。我尝试使用callsubname,但没有任何区别 请让我知道我还能发送什么或解释什么 在此工作簿中找到的代码: Private Sub Workbook_Open() Sheet1.Worksheet_Activate//<- Object Required Sheet2.Worksheet_Activate Sheet3.Worksheet_Activate Sheet4.Worksheet_Act

我对vba很陌生。打开文档时,我遇到424 Ojbect必需错误。我尝试使用callsubname,但没有任何区别

请让我知道我还能发送什么或解释什么

在此工作簿中找到的代码:

Private Sub Workbook_Open()
   Sheet1.Worksheet_Activate//<- Object Required
   Sheet2.Worksheet_Activate
   Sheet3.Worksheet_Activate
   Sheet4.Worksheet_Activate
   Sheet5.Worksheet_Activate
   Sheet6.Worksheet_Activate
   Sheet7.Worksheet_Activate
...

提前谢谢。

只需将其更改为
Sheet1。激活
即可调用该事件。

您不应该手动调用事件处理程序,但这不是出现该错误的原因;通过将方法
公开
您已经将其公开到
Sheet1
的界面上,使这些调用完全“合法”——因此毫无疑问,这些方法确实会被调用

转到工具/选项/常规/错误捕获,并将其设置为在未处理错误时中断

然后,您应该更好地了解哪一条语句正在爆炸,最有可能位于以下语句之一的某个位置:

Me.initReqLink
Me.initVersion
Me.initCbApplicaiton
…你还没有发布


旁注,
Call
没有什么区别,因为它是一种过时的语法,自从很久以前隐式调用语法出现以来就没有任何用途了。您永远不需要显式的
Call
语句。从不。

您是否将表1声明为工作表?“ThisWorkbook.Worksheets(“Sheet1”)。默认情况下,事件处理程序是
私有的
,其原因是:它们不能像这样手动调用,请参阅@danieltakeshi
Sheet1
将是
CodeName
标识符,是VBA为Excel项目中的每个工作表创建的一个自由的全局范围对象变量标识符。无需每次都声明它并从此工作簿中获取它。此外,按名称获取工作表是非常脆弱的,因为用户可以一时兴起重命名工作表。@Mat'smugh我不知道!感谢您的解释。非常确定事件处理程序确实被调用了。OP的IDE可能没有突破类模块,这隐藏了真正的问题。但让Excel调用事件而不是显式调用事件的做法值得称赞。
Me.initReqLink
Me.initVersion
Me.initCbApplicaiton