我正在尝试找到一种方法,允许用户在工作表受保护时插入行,但仅限于特定范围内。例如,我不希望用户能够在行“1”和“2”之间插入一行(因为它会使我的宏做有趣的事情),但我希望他能够插入一行在其他地方。
以下代码允许用户在工作表中的任何位置插入行,但这不是我想要的:
ActiveSheet.Protect Password:="qwerty", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingRows:=True, AllowDeletingRows:=True
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
无法阻止用户仅在特定范围内插入行,您可以锁定这些单元格并阻止选择锁定的单元格,这样用户就不会选择前两行中的单元格防止他们意外地做到这一点?
您还可以锁定行插入并设置UserInterfaceOnly:=True
并处理通过宏插入的任何行,如果他们尝试在错误的位置插入行,则取消该过程。
用户是否有必要在整个工作表中插入行?
答案 1 :(得分:1)
您可以在工作表选择更改事件中使用以下代码。
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