我正在尝试创建一个宏,该宏将在关闭Excel询问我是否要保存更改之前给我一个消息框。当我从消息框中选择“否”时,该消息再次弹出,然后我第二次选择“否”,它会关闭。
我对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
答案 0 :(得分:2)
尝试一下:
您已经关闭了工作簿,因此无需在代码中再次关闭它。只是“欺骗” 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
更好。