Vba 代码执行已被保存宏中断
我使用了类似的方法来强制用户使用某个按钮进行保存。 我有以下资料: 公共变量 按钮事件 拯救捕手 悲伤 上面的代码在一段时间内运行良好,但现在它告诉我Vba 代码执行已被保存宏中断,vba,excel,Vba,Excel,我使用了类似的方法来强制用户使用某个按钮进行保存。 我有以下资料: 公共变量 按钮事件 拯救捕手 悲伤 上面的代码在一段时间内运行良好,但现在它告诉我代码执行在MacroSave=False处被中断。如果我在错误弹出窗口中点击Continue,则文件保存良好。我看不出任何东西工作不正常;只是这个讨厌的弹出窗口 我试过了 在MacroSave=False之前和之后添加DoEvents thiswook.Save),但代码在DoEvents上被中断 将该行移到“save catcher”,但出现相
代码执行在MacroSave=False
处被中断。如果我在错误弹出窗口中点击Continue
,则文件保存良好。我看不出任何东西工作不正常;只是这个讨厌的弹出窗口
我试过了
- 在
MacroSave=False
之前和之后添加DoEvents
thiswook.Save
),但代码在DoEvents
上被中断
- 将该行移到“save catcher”,但出现相同的错误
在按钮事件的
结束子菜单中出现
出错时继续下一步
,但这并不能消除此问题
我做错了什么?我怎样才能消除这个问题?这对我来说很有效
常规模块:
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
这对我有用
常规模块:
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
其他的建议很好,但是……归结起来:
按弹出窗口中的“调试”按钮
按Ctrl+Pause | Break键两次
点击播放按钮继续
完成后保存文件
其他的建议很好,但是……归结起来:
按弹出窗口中的“调试”按钮
按Ctrl+Pause | Break键两次
点击播放按钮继续
完成后保存文件
我想知道您是否有某种竞争条件,因为工作簿需要时间保存,因此您在保存前点击工作簿的最后一行,然后移动到RealSave\u
。如果您在标注位置声明MacroSave=false
,并在RealSave\u单击中消除MacroSave=false
,我同意;看起来确实如此。你的建议有几个问题:(1)我已经在MacroSave=False
中移动了,但是代码在RealSave\u Click()
的结束子部分被中断。(2) 我必须在某个时候将MacroSave
重置为False。(3) 我相信在子函数或函数之外为MacroSave
赋值是无效的。既然你公开了它,你可以在工作簿打开事件中声明它。我假设你有类似选项的东西,比如显式Dim MacroSave as Boolean
@MattCremeens哦,好;我道歉。我希望能够在它打开时保存多次,但是…我想知道您是否有某种竞争条件,因为工作簿需要时间保存,因此您在保存前单击工作簿的最后一行。如果您在标注位置声明MacroSave=false
,并在RealSave\u单击中消除MacroSave=false
,我同意;看起来确实如此。你的建议有几个问题:(1)我已经在MacroSave=False
中移动了,但是代码在RealSave\u Click()
的结束子部分被中断。(2) 我必须在某个时候将MacroSave
重置为False。(3) 我相信在子函数或函数之外为MacroSave
赋值是无效的。既然你公开了它,你可以在工作簿打开事件中声明它。我假设你有类似选项的东西,比如显式Dim MacroSave as Boolean
@MattCremeens哦,好;我道歉。我希望能够在它打开时潜在地保存多次,但是。。。
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
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
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