2013-01-18 71 views
1

我正在运行一个宏,而在Private Sub Workbook_BeforeClose(Cancel As Boolean) 但每当用户点击取消按钮宏不应该运行。VBA Excel-如何使用MS Excel中的取消按钮关闭?


我不停的代码

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
If Cancel = True Then 
    MsgBox "You clicked on Cancel" 
ElseIf Cancel = False Then 
    Call SDA 
End If 

末次
以下行但每当我按取消按钮,它没有显示我任何MessageBox.Any帮助,将不胜感激。 enter image description here

+1

'取消'参数不说天气取消被按下。它可以让你的代码覆盖正在发生的关闭事件,将其设置为true将停止关闭工作簿,离开它或将其设置为false将允许关闭操作完成。 – NickSlash

+0

@NickSlash,有没有办法找到'Cancel'是否被按下? thaks的回复:-) –

回答

7

尝试此请:

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 
  • 输出对话框:

enter image description here

一个消息的通常结构取消事件涡卷如下:

'--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 
+1

@Saikiran请看看第一个。它实际上是'覆盖'通常的'Close_Before事件' – bonCodigo

+1

@ bonCondigo,嗨感谢您的回应,但它对我无效.'let我用另一种方式告诉我我的需求:我只想显示MessageBox当用户点击CANCEL按钮时。 –

+0

@SaiKiranMandhala它似乎适合我,当我点击取消按钮..让我更新屏幕.. :) – bonCodigo