8

按下我的命令按钮后,我希望有一个弹出窗口询问“这些更改无法撤消。建议在继续之前保存一份副本。你想继续吗?”

我想有三个选择:

  1. 是 - 弹出窗口关闭并执行命令按钮宏
  2. 否 - 这将关闭弹出窗口并且不更改任何内容
  3. 保存 - 关闭弹出窗口并打开“另存为”(不执行宏)

我真的不知道从哪里开始。你能帮我一把吗?

非常感谢你。

4

2 回答 2

21

您可以使用消息框,但这有点受限。您可以稍微改写问题以使用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
于 2013-05-30T15:00:57.313 回答
9

我建议您将代码放在宏的顶部以提出这个问题并回复答案。

这看起来像:

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 看起来很漂亮,这可能是值得的。

于 2013-05-30T14:56:29.777 回答