VBA Excel如何使用MS Excel关闭中的“取消”按钮?

VBA Excel如何使用MS Excel关闭中的“取消”按钮?,excel,events,vba,messagebox,Excel,Events,Vba,Messagebox,在关闭(取消为布尔值)之前,我在专用子工作簿中运行宏 但每当用户单击取消按钮时,宏不应运行 我一直在遵循代码行 Private Sub Workbook_BeforeClose(Cancel As Boolean) If Cancel = True Then MsgBox "You clicked on Cancel" ElseIf Cancel = False Then Call SDA End If 结束Sub但每当我按下取消按钮时,它都不会显示任何消息框。任何帮助都将不

在关闭(取消为布尔值)之前,我在
专用子工作簿中运行宏
但每当用户单击取消按钮时,宏不应运行


我一直在遵循代码行

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Cancel = True Then
    MsgBox "You clicked on Cancel"
ElseIf Cancel = False Then
    Call SDA
End If
结束Sub
但每当我按下取消按钮时,它都不会显示任何消息框。任何帮助都将不胜感激。

请尝试以下操作:

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Msg As String
Dim ireply As Integer
    If Not Me.Saved Then
        Msg = "Do you want to Save this book? "
        ireply = MsgBox(Msg, vbQuestion + vbYesNoCancel)
        Select Case ireply
            Case vbYes
                Me.Save
                Call SDA 
            Case vbNo
                Me.Saved = True
            Case vbCancel
                Cancel = True
                MsgBox "Cancelling...workbook close event!"
                Exit Sub
          End Select
    End If        
End Sub
  • 输出对话框:

messagebox取消事件包装的通常结构如下所示:

'--Display MessageBox
    Dim intMsg as integer
    intMsg = MsgBox(strPrompt, vbYesNo, strTitle) 
    '--Check pressed button
    If iRet = vbNo Then
        MsgBox "NO!"
    Else
        MsgBox "Yes!"
    End If
请试试这个:

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Msg As String
Dim ireply As Integer
    If Not Me.Saved Then
        Msg = "Do you want to Save this book? "
        ireply = MsgBox(Msg, vbQuestion + vbYesNoCancel)
        Select Case ireply
            Case vbYes
                Me.Save
                Call SDA 
            Case vbNo
                Me.Saved = True
            Case vbCancel
                Cancel = True
                MsgBox "Cancelling...workbook close event!"
                Exit Sub
          End Select
    End If        
End Sub
  • 输出对话框:

messagebox取消事件包装的通常结构如下所示:

'--Display MessageBox
    Dim intMsg as integer
    intMsg = MsgBox(strPrompt, vbYesNo, strTitle) 
    '--Check pressed button
    If iRet = vbNo Then
        MsgBox "NO!"
    Else
        MsgBox "Yes!"
    End If

@Saikiran请看第一个。这简直是写得太多了
通常的事件前关闭@bonCondigo,你好,谢谢你的回复,但它对我不起作用。
让我用另一种方式告诉你我的要求:我只想在用户点击取消按钮时显示MessageBox
@SaiKiranMandhala它似乎对我有效,当我单击“取消”按钮时。。让我更新屏幕……)@bonCodigo的第一个例子就是这么做的?在标准excel消息框中按“取消”按钮时,无法(或很容易)挂起。@bonCodigo,很抱歉,是我的宏再次触发对话框。现在没事了。它就像一个符咒。非常感谢:-)@Saikiran请看第一张。这简直是写得太多了通常的事件前关闭@bonCondigo,你好,谢谢你的回复,但它对我不起作用。
让我用另一种方式告诉你我的要求:我只想在用户点击取消按钮时显示MessageBox
@SaiKiranMandhala它似乎对我有效,当我单击“取消”按钮时。。让我更新屏幕……)@bonCodigo的第一个例子就是这么做的?在标准excel消息框中按“取消”按钮时,无法(或很容易)挂起。@bonCodigo,很抱歉,是我的宏再次触发对话框。现在没事了。它就像一个符咒。非常感谢:-)参数
Cancel
没有说明是否按下了天气取消。它可以让您的代码覆盖正在发生的关闭事件,将其设置为true将阻止excel关闭工作簿,将其单独设置或将其设置为false将允许关闭操作完成。@NickSlash,是否仍可以确定是否按下了
取消
?thaks for reply:-)参数
Cancel
没有说明是否按下了天气取消。它可以让您的代码覆盖正在发生的关闭事件,将其设置为true将阻止excel关闭工作簿,将其单独设置或将其设置为false将允许关闭操作完成。@NickSlash,是否仍可以确定是否按下了
取消
?答:——)