使用VBA取消保护细胞

时间:2016-09-28 18:25:42

标签: excel-vba cells protection vba excel

所以我有一个电子表格,我想根据用户输入进行格式化,但是单元格需要保持锁定状态,直到格式化确定它们是用户输入单元格为止。 我的代码只能查看用户界面的单元格,但允许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代码,用于在应用格式化之后解锁单元格,而不是预先定义哪些单元格可以编辑。 感谢任何帮助:)

1 个答案:

答案 0 :(得分:3)

更改范围的Locked属性。

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

这相当于使用Format Cells |保护|锁定复选框以从单元​​格中删除保护,并使单元格立即可用于编辑。

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

Dim sht as Worksheet

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

通过添加新工作表,人们无法绕过限制,如果重新命名工作表等,保护将继续有效。