我制作了一个保护工作表并将工作表更改为工作表“A”的宏,然后保存文件,然后返回到我已经开始的工作表。
不幸的是,当我的宏在工作簿中时,“另存为”选项不起作用。每当我单击“另存为”并想要搜索保存文件的位置时,宏就会开始运行,并禁用我尝试执行的操作。
这是我写的代码:
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
答案 0 :(得分:2)
因为我猜Cancel = True
。
您应该使用ByVal SaveAsUI As Boolean
标志来查看用户是否点击了&#34;另存为&#34;。
如果您不希望宏运行在&#34;另存为&#34;,您可以将其放在方法的开头:
If SaveAsUI Then
Return
End If