保护工作表仅在特定范围内插入行

我试图find一种方法来允许用户插入行,但只在特定的范围内,当工作表被保护。 例如,我不希望用户能够在行“1”和“2”之间插入一行(因为这会使我的macros做有趣的事情),但是我希望他能够插入一行其他地方。

下面的代码允许用户在工作表中的任何地方插入行,但这不完全是我想要的:

ActiveSheet.Protect Password:="qwerty", DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True, AllowFormattingColumns:=True, _ AllowFormattingRows:=True, AllowInsertingRows:=True, AllowDeletingRows:=True 

有人可以帮我解决这个问题吗?

没有办法阻止用户只在特定范围内插入行,你可以locking这些单元格,并防止locking单元格的select,这样用户不会select顶部两行中的单元格,这可能会阻止他们意外地做到这一点?

您也可以locking行插入并设置UserInterfaceOnly:=True并通过macros处理任何行插入,如果他们试图在错误的位置插入一行,则取消该过程。

用户是否可以在整个工作表中插入行?

您可以在工作表select更改事件上使用下面的代码。

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Row = 1 Or Target.Row = 2 Then 'MsgBox "Check" ActiveSheet.Protect Password:="qwerty", DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True, AllowFormattingColumns:=True, _ AllowFormattingRows:=True, AllowInsertingRows:=False, AllowDeletingRows:=True Else ActiveSheet.Unprotect Password:="qwerty" End If End Sub