MsgBox 使用 If answer = Yes/No/Cancel 出现两次
MsgBox comes up twice using If answer = Yes/No/Cancel
我正在尝试创建一个宏,它会在关闭 Excel 之前给我一个消息框,询问我是否要保存更改。当我从消息框中 select 否时,消息再次弹出,然后我第二次选择否时它确实关闭了。
我对VBA编程不太了解,我只是尝试录制宏然后稍微编辑一下。我也在网上搜索和复制粘贴。这就是我在下面整理这段代码的方式,但显然出了点问题。 (虽然有效)
我想知道是否有人可以告诉我这段代码中需要更改的内容。
任何帮助表示赞赏,
谢谢
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim answer As String
Dim question As String
Dim OrigName As String
question = "Do you want to save Changes?"
answer = MsgBox(question, vbYesNoCancel)
If answer = vbCancel Then
Exit Sub
End If
If answer = vbNo Then
ActiveWorkbook.Close SaveChanges:=False
End If
If answer = vbYes Then
ActiveWorkbook.Save
ActiveWorkbook.SaveAs ("C:\Users\me\Documents\reports\Backup\" + ActiveWorkbook.Name & Format(Now(), "DD-MMM-YYYY hh-mm") & ".xlsm")
Exit Sub
End If
End Sub
试试这个:
您已经关闭了工作簿,因此无需在您的代码中再次关闭它。只是 'trick' Excel 认为更改是用 ThisWorkbook.Saved = True
保存的(注意:这只告诉 Excel 更改已保存 - 实际上并没有保存它们) 并且它不会提示您保存更改。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Select Case MsgBox("Do you want to save Changes?", vbYesNoCancel)
Case vbCancel
Cancel = True
Case vbNo
ThisWorkbook.Saved = True
Case vbYes
ThisWorkbook.Save
ThisWorkbook.SaveAs ("C:\Users\me\Documents\reports\Backup\" + ActiveWorkbook.Name & Format(Now(), "DD-MMM-YYYY hh-mm") & ".xlsm")
End Select
End Sub
在您的案例中使用 ThisWorkbook
比使用 ActiveWorkbook
更好。
我正在尝试创建一个宏,它会在关闭 Excel 之前给我一个消息框,询问我是否要保存更改。当我从消息框中 select 否时,消息再次弹出,然后我第二次选择否时它确实关闭了。
我对VBA编程不太了解,我只是尝试录制宏然后稍微编辑一下。我也在网上搜索和复制粘贴。这就是我在下面整理这段代码的方式,但显然出了点问题。 (虽然有效) 我想知道是否有人可以告诉我这段代码中需要更改的内容。 任何帮助表示赞赏, 谢谢
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim answer As String
Dim question As String
Dim OrigName As String
question = "Do you want to save Changes?"
answer = MsgBox(question, vbYesNoCancel)
If answer = vbCancel Then
Exit Sub
End If
If answer = vbNo Then
ActiveWorkbook.Close SaveChanges:=False
End If
If answer = vbYes Then
ActiveWorkbook.Save
ActiveWorkbook.SaveAs ("C:\Users\me\Documents\reports\Backup\" + ActiveWorkbook.Name & Format(Now(), "DD-MMM-YYYY hh-mm") & ".xlsm")
Exit Sub
End If
End Sub
试试这个:
您已经关闭了工作簿,因此无需在您的代码中再次关闭它。只是 'trick' Excel 认为更改是用 ThisWorkbook.Saved = True
保存的(注意:这只告诉 Excel 更改已保存 - 实际上并没有保存它们) 并且它不会提示您保存更改。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Select Case MsgBox("Do you want to save Changes?", vbYesNoCancel)
Case vbCancel
Cancel = True
Case vbNo
ThisWorkbook.Saved = True
Case vbYes
ThisWorkbook.Save
ThisWorkbook.SaveAs ("C:\Users\me\Documents\reports\Backup\" + ActiveWorkbook.Name & Format(Now(), "DD-MMM-YYYY hh-mm") & ".xlsm")
End Select
End Sub
在您的案例中使用 ThisWorkbook
比使用 ActiveWorkbook
更好。