按下我的命令按钮后,我希望有一个弹出窗口询问“这些更改无法撤消。建议在继续之前保存一份副本。你想继续吗?”
我想有三个选择:
- 是 - 弹出窗口关闭并执行命令按钮宏
- 否 - 这将关闭弹出窗口并且不更改任何内容
- 保存 - 关闭弹出窗口并打开“另存为”(不执行宏)
我真的不知道从哪里开始。你能帮我一把吗?
非常感谢你。
您可以使用消息框,但这有点受限。您可以稍微改写问题以使用vbYesNoCancel
按钮,因为Save As
它不是 Message Box 上的可选按钮。
然后您可以使用消息框按钮单击的结果:
Dim mbResult as Integer
mbResult = MsgBox("These changes cannot be undone. Would you like to save a copy before proceeding?", _
vbYesNoCancel)
Select Case mbResult
Case vbYes
'Modify as needed, this is a simple example with no error handling:
With ActiveWorkbook
If Not .Saved Then .SaveAs Application.GetSaveAsFilename()
End With
Case vbNo
' Do nothing and allow the macro to run
Case vbCancel
' Do NOT allow the macro to run
Exit Sub
End Select
我建议您将代码放在宏的顶部以提出这个问题并回复答案。
这看起来像:
Sub YourMacro()
if MsgBox("These changes cannot be undone. It is advised to save a copy before proceeding. Do you wish to proceed?", vbYesNo + vbQuestion) = vbNo then
exit sub
end if
... the rest of your macro.
请注意,这不会为用户提供保存选项。你不能用标准的 MsgBox 做到这一点。如果您想这样做,您将需要创建自己的用户表单,显示它而不是 MsgBox 并响应用户按下的用户表单中的按钮。这对你来说比仅仅使用 MsgBox 要多得多,但如果你想让你的 UI 看起来很漂亮,这可能是值得的。