2011-05-17 28 views
0

我想创建一个提示,提醒用户在关闭它之前导出文件。我的代码如下所示:插入MessageBox与选项取消关闭文件的问题

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    Dim Response As Long 

    Response = MsgBox("If changes have been made to this file without running the Monthly Claim Program, you MUST run the 'Export to Mastersheet' program. If you have not yet exported the file, please press NO, and do so. Otherwise, press YES to close this file", vbYesNo) 
    If Response = vbNo Then 
     Cancel = True 
    Else 

    End If 
    Call Remove_Macros_Menu 
End Sub 

但是,无论我选择True还是False取消功能,文件都会关闭。任何想法,为什么这是?

+4

适用于我,Remove_Macros_Menu做什么?它关闭了WB吗?如果是这样你想在其他块 – 2011-05-17 16:52:05

回答

0

Kathy,

ThisWorkbook模块中的代码?它需要在那里,否则它不会做任何事情。另外,假设Remove_Macros_Menu删除了这个工作簿的一个自定义菜单,我想你想要在Else子句中调用它的那一行,特别是如果在该菜单中有一个导出代码的按钮。否则,即使按下否,您仍将删除菜单

请注意在BeforeClose事件中删除菜单时存在缺陷,即如果工作簿未保存,用户将看到“保存,不保存,取消“菜单。如果他们选择取消,关闭被取消,但您的菜单仍然被删除。

+0

该代码是在ThisWorkbook模块。此代码可以在我们网络上的某些计算机上运行,​​而不是其他代码。这很奇怪。就Remove_Macros_Menu代码而言,你建议我把它放在哪里? – kathy 2011-05-19 15:14:24

+0

凯西,计算机是否都启用了宏?你可以在电脑上运行其他的宏吗? 我把我的MakeMenu和DeleteMenu例程放在WorkbookActivate和WorkbookDeactivate过程中(或者有时在类似的Worksheet事件中)。这还有一个额外的优点,即只有当它们所属的工作簿处于活动状态时,才会显示您的菜单。 – 2011-05-19 20:22:17