关闭期间运行时的宏投掷错误 - 子或功能未定义

时间:2015-11-09 18:13:26

标签: excel vba excel-vba

我有三个宏放在excel表的表2中。我想在excel表关闭时运行宏。我使用了以下代码,

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Macro1
    Macro2
    Macro3
End Sub

其中Macro1,Macro2和Macro3是sheet2中的宏。此代码放在Excel工作表的ThisWorkBook部分中。当我执行此操作时,我收到错误,

Compile Error:
    Sub or Function not defined 

假设sheet2具有名称" Nameofsheet2" ,任何人都可以帮我解决这个问题吗?我希望每当excel表关闭时,sheet2中的宏都会运行。

由于

3 个答案:

答案 0 :(得分:1)

将宏代码放在模块上,它可能会起作用。

答案 1 :(得分:1)

最简单的方法就是这样称呼它们:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    SheetX.Macro1
    SheetX.Macro2
    SheetX.Macro3
End Sub

其中SheetX是Sheet2的内部代码名称(这是您在VBA IDE的项目窗口中看到的名称,它可能与Excel工作表标签中显示的名称不同)

答案 2 :(得分:0)

如果要从不是当前工作簿的工作簿中调用宏,只需使用Application.Run "Personal.xlsb!clearImmediateWindow"

即。 Sheet2.MacroName

如果它存储在另一张表中,请使用More?