在不继承锁定属性的情况下插入新行

时间:2016-07-12 18:19:28

标签: excel vba excel-vba

这是交易:

我有一个带有锁定动态范围的受保护工作表(为了理解,我们说:A1:E100)。我允许在保护属性中插入和删除新行。所以,如果我想在A10和A11之间插入一行,它会让我。但是,如果我想向此行添加内容,它将不会让我,因为它继承了Cells Above的属性。

如果我在单元格A250中插入一个新行,我当然会遇到问题,因为这部分工作表没有锁定。显然我想在所提到的动态定义范围(A1:E100)之间插入Row。

有没有办法插入新行而不从单元格继承上面的属性? 有没有办法新插入的行没有被锁定?

我想保持我现在锁定的范围,如果其他范围不在我定义的范围之间,我不会插入行。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

添加新行时,您可以自行取消保护并保护工作表。如果目标是新添加的行,您可能需要使用更好的检查。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Locked = False Then Exit Sub 'only execute if target is locked (which means the only way it could have changed is if it was inserted, I hope)
    Me.Unprotect
    Target.EntireRow.Locked = False
    Me.Protect AllowInsertingRows:=True
End Sub

您还可能想要使用Sheet.ProtectContents检查工作表是否受到保护。否则,如果您手动取消保护并更改锁定行内的某些内容,它将解锁内容。