[英]Dynamically protect sheet from accidental deletion in Excel
我正在尝试在工作簿的工作表上添加动态保护。 我有很多不同的工作表,有时我会意外删除仍然需要的工作表。
如果单元格OP15中包含一个值,则表示我可以删除工作表以清理工作簿。 如何为工作表创建保护,仅当单元格OP15包含值时才允许删除它?
我在互联网上能找到的最接近的东西是这些东西:
ActiveSheet.Unprotect
' your vba code here
ActiveSheet.Protect
.BeforeDelete
没有取消,因此您不能阻止他们删除工作表。
在此网站上,您可以复制工作表,并保存该工作表以免被删除。 您可以使用此例程来确定是否需要保存工作表以免被删除:
Private Sub Worksheet_BeforeDelete()
Dim MyName As String
'Abort if no value in OP15
if [OP15].value<>'' then exit sub
‘Capture the original worksheet name
MyName = ThisWorkbook.ActiveSheet.Name
‘Rename the worksheet
ThisWorkbook.ActiveSheet.Name = Left(MyName, 30) + “#”
‘Create a copy of the worksheet
ThisWorkbook.ActiveSheet.Copy _
After:=Sheets(ThisWorkbook.ActiveSheet.Index)
‘Name the copy to the original name
ThisWorkbook.ActiveSheet.Name = MyName
End Sub
将此代码粘贴到我的管理模板的工作表代码中。 单元格A1硬编码为“管理模板”。 复制模板后,单元格A1更改为新选项卡的名称。
Option Explicit
Private Sub Worksheet_Deactivate()
'This sub prevents acidental deletion of tab until it has been hardcoded
If Range("a1").Value = "admin template Ticket Info" Then
ThisWorkbook.Protect , False
Exit Sub
End If
If Range("OP15").Value <> "" Then
MsgBox "Cannot delete tab until the Onboarding details have been hardcoded."
Exit Sub
End If
ThisWorkbook.Protect , True
Application.OnTime Now, "Unprotectbook"
End Sub
这被复制到模块之一
Sub UnprotectBook()
ThisWorkbook.Unprotect
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.