使用VBA取消单元格的保护



所以我有一个电子表格,我想根据用户输入进行格式化,但是单元格需要保持锁定,直到格式确定它们将是用户输入单元格。我有代码,将查看单元格的用户界面,但允许VBA编辑它们。

> 'protects all sheets upon opening work book
>     Me.Worksheets("Sheet1").Protect "Password", UserInterfaceOnly:=True
>     Me.Worksheets("Sheet2").Protect "Password", UserInterfaceOnly:=True
>     Me.Worksheets("Sheet3").Protect "Password", UserInterfaceOnly:=True

所以现在我需要允许以下单元格可以被用户

编辑
Sheets("Sheets2").Protection.AllowEditRanges.Add "Test", Range("C2", "C8")
Sheets("Sheets2").Protection.AllowEditRanges.Add "Test", Range("H6")
Sheets("Sheets2").Protection.AllowEditRanges.Add "Test", Range("K6")

我已经尝试允许编辑之前,我锁定工作表和之后。我真正想要的是一些VBA代码来解锁应用格式后的单元格,而不是定义哪些单元格可能是可编辑的提前。任何帮助都非常感谢:)

修改range的Locked属性

Range("C2", "C8").Locked = false

这相当于使用"格式单元格|保护|锁定"复选框来删除单元格的保护,并将使该单元格立即可用于编辑。

此外,为了将来使用,您可能想要考虑在保护步骤中添加一个简单的循环:

Dim sht as Worksheet
For each sht in ThisWorkbook.Sheets
    sht.protect password:=Password, Userinterfaceonly:=True
Next sht

这样人们就不能通过添加新工作表来绕过限制,并且如果工作表被重命名,保护将继续起作用,等等。

最新更新