保存之前不能使用另存为

我已经制作了一个保护表单并将表单更改为表单“A”的macros,然后保存该文件,然后返回到我已经开始的表单。

不幸的是,当我的macros在工作簿中时另存为选项不起作用。 每当我点击另存为,想search一个地方保存我的文件,macros开始运行,并禁用我试图采取的行动。

这是我写的代码:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Cancel = True Application.EnableCancelKey = XlEnableCancelKey.xlDisabled Application.ScreenUpdating = False Application.EnableEvents = False Dim aktywny As Worksheet Set aktywny = ActiveSheet For Each Sh In ThisWorkbook.Sheets If InStr(Sh.Name, ".") <> 0 Then If Sh.ProtectContents = False Then Sh.Protect Password:="XXX", DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True, AllowFormattingColumns:=True End If End If Next ThisWorkbook.Sheets("A").Activate Me.Save aktywny.Activate ThisWorkbook.Saved = True Cancel = True Application.EnableEvents = True Application.ScreenUpdating = True End Sub 

因为Cancel = True我猜。

您应该使用ByVal SaveAsUI As Boolean标志来查看用户是否单击“另存为”。

如果你不想让macros在“Save as”上运行,你可以把它放在方法的开头:

 If SaveAsUI Then Return End If