如果条件不符合,如何在BeforeSave事件期间closures工作簿?

我正在尝试在BeforeSave事件期间closures工作簿,如果不满足条件。 我正在使用下面的代码,保存取消按预期,但closures事件崩溃Excel。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If X <> Y then Cancel = True ThisWorkbook.Close savechanges:=False End If End Sub 

我甚至试图调用另一个closures命令在其中,但也产生了同样的问题

 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If X <> Y then Cancel = True ExitNoSave End If End Sub Public ExitNoSave () ThisWorkbook.Close savechanges:=False End Sub 

这里是从代码的屏幕抓取我做了一个新的工作簿只有之前保存事件,它仍然发生。

在这里输入图像说明

在这里输入图像说明

有没有人有办法做到这一点,或者不可能从BeforeSave事件做到这一点?

好吧,我想通了你必须使用AfterSave事件来完成这个现在显然是这样的,如果你用BeforeSave事件取消保存,它将保存失败传递给AfterSave事件,然后你可以为不同的条件编写你的代码。

 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If 1 <> 2 Then Cancel = True End If End Sub Private Sub Workbook_AfterSave(ByVal Success As Boolean) If Success = False Then ThisWorkbook.Close savechanges:=False End If End Sub