首页 > 解决方案 > 在 Excel 中动态保护工作表不被意外删除

问题描述

我正在尝试在我的工作簿中的工作表上设置动态保护。我有许多不同的工作表,有时我会意外删除仍然需要的工作表。

如果 Cell OP15 包含一个值,这意味着我可以删除工作表以清理我的工作簿。如果 Cell OP15 包含一个值,我如何为只有让我删除它的工作表创建保护?

我在互联网上能找到的最接近的东西是这样的:

     ActiveSheet.Unprotect
     ' your vba code here
     ActiveSheet.Protect

标签: vbaexcel

解决方案


此代码已粘贴到我的管理模板的工作表代码中。单元格 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

推荐阅读