代码执行已被保存预防宏中断

时间:2015-08-13 16:46:12

标签: excel vba excel-vba

我使用了与this answer类似的方法强制用户使用某个按钮进行保存。 我有以下内容:

公共变量

Dim MacroSave As Boolean

按钮事件

Sub RealSave_Click()
MacroSave = True
ThisWorkbook.Save
MacroSave = False
End Sub

保存捕手

Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Not MacroSave Then
    Cancel = True 'Cancels any request to save the file
    MsgBox "Workbook not saved."
    Else
    Ret = MsgBox("Are you sure you want to save?", vbCritical Or vbYesNo, "Save File?")
        If Ret = vbNo Then Cancel = True
    End If
End Sub

悲伤

以上代码在一段时间内完美运行,但现在它在Code execution has been interrupted告诉我MacroSave = False。如果我在错误弹出窗口中点击Continue,则文件已保存正常。我看不到任何不正常的事情;它就是这个讨厌的弹出窗口。

我试过

  • DoEvents之前添加MacroSave = False(之后 ThisWorkbook.Save),但代码在DoEvents上中断。

  • 将该行移至" 保存捕手",但同样的错误 在按钮事件的End Sub上出现了。

  • On Error Resume Next,但不能解决此问题。

我做错了什么,如何消除这个?

2 个答案:

答案 0 :(得分:0)

这对我有用......

常规模块:

Option Explicit

Public MacroSave As Boolean

Sub RealSave_Click()

    If MsgBox("Are you sure you want to save?", vbExclamation + vbYesNo, _
             "Save File?") <> vbYes Then Exit Sub

    On Error GoTo haveError
    MacroSave = True
    ThisWorkbook.Save
    MsgBox "Saved!"

haveError:
    MacroSave = False

End Sub

ThisWorkbook模块:

Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Not MacroSave Then
        Cancel = True
        MsgBox "Workbook not saved: please use the 'Save changes'" & _
               " button to save this workbook"
    End If
End Sub

答案 1 :(得分:0)

其他建议很棒,但......归结为this

  1. 按&#34;调试&#34;弹出窗口中的按钮。
  2. 按两次 Ctrl + Pause | Break
  3. 点击播放按钮继续。
  4. 完成后保存文件。