Excel VBA:表单保护无法正常工作

时间:2011-04-11 11:56:47

标签: excel-vba protection vba excel

使用VBA我试图禁止插入和删除行和列,同时允许用户编辑单元格内容。我希望以下电话可以解决这个问题:

ActiveSheet.Protect Password:="SomePassword", _
AllowInsertingColumns:=False, AllowInsertingRows:=False, _
AllowDeletingColumns:=False, AllowDeletingRows:=False, Contents:=False

但这并不像我预期的那样有效。我仍然可以插入和删除行和列。

我错过了什么?实现上述目标的正确方法是什么?

3 个答案:

答案 0 :(得分:2)

经过一些实验后我找到了答案。这是代码:

ActiveSheet.Cells.Locked = False
ActiveSheet.Protect Password:="SomePassword"

这会将工作表中所有单元格的“已锁定”属性设置为“False”,然后完全保护工作表。它起作用的原因是因为保护禁用了“锁定”设置为“True”的单元格的

答案 1 :(得分:0)

据我所知,你需要Contents:=True才能使其他一切正常运作!当然,这违背了用户能够编辑单元格内容的需要...锁定单元格。因此,在保护工作表之前,只需解锁所有单元格(格式化|保护|取消选中锁定的复选框)。

答案 2 :(得分:0)

似乎AllowInsertingRows等是仅当您使用Contents:= True锁定内容时才可用的选项。帮助信息中未明确说明这一点。

由于您希望内容可编辑,因此您必须将所有想要编辑的单元格标记为已解锁(将单元格或范围属性设置为已锁定为false)。然后使用Protect with Contents:= True。