如何锁定工作sheet中的特定范围但不锁定sheet
How to lock specific range in worksheet but don't lock sheet
我只想保护我作品中的 D1:D9 范围 sheet 以防止用户编辑。但是,我不想保护整个sheet。有办法解决这个问题吗?我一直在阅读帖子并尝试实施他们的代码等,但其中 none 似乎对我有用。非常感谢您的帮助!!
Private Sub Workbook_Open()
Dim Sheet1 As Worksheet
Set Sheet1 = Sheets("Screening Request")
Sheet1.Cells.Locked = False
Sheet1.Range("D1:D9").Locked = True
' set the value
Sheet1.Protect
End Sub
以下代码按预期工作,如果您想更改锁定范围,可以 运行 多次:
Private Sub Workbook_Open()
Dim MySh As Worksheet
Set MySh = Sheets("Screening Request")
MySh.Unprotect
MySh.Cells.Locked = False
MySh.Range("D1:D9").Locked = True
MySh.Protect
End Sub
取消对 sheet 的保护,因此不会抛出您上次保护它时的错误。然后解锁所有单元格,所以只有指定的范围被锁定,没有别的。然后锁定指定范围。然后它重新保护 sheet.
编辑 根据 psyduck 的评论,合并单元格在处理范围时是一个问题。在这种情况下,两列已完全合并,因此可以将范围更改为 D1:F9
如果合并的不是整个范围,请执行单独的实例,如下所示:
MySh.Range("D1:D8").Locked = True
MySh.Range("D9:F9").Locked = True
感谢 Mathieu Guindon 的建议。
我只想保护我作品中的 D1:D9 范围 sheet 以防止用户编辑。但是,我不想保护整个sheet。有办法解决这个问题吗?我一直在阅读帖子并尝试实施他们的代码等,但其中 none 似乎对我有用。非常感谢您的帮助!!
Private Sub Workbook_Open()
Dim Sheet1 As Worksheet
Set Sheet1 = Sheets("Screening Request")
Sheet1.Cells.Locked = False
Sheet1.Range("D1:D9").Locked = True
' set the value
Sheet1.Protect
End Sub
以下代码按预期工作,如果您想更改锁定范围,可以 运行 多次:
Private Sub Workbook_Open()
Dim MySh As Worksheet
Set MySh = Sheets("Screening Request")
MySh.Unprotect
MySh.Cells.Locked = False
MySh.Range("D1:D9").Locked = True
MySh.Protect
End Sub
取消对 sheet 的保护,因此不会抛出您上次保护它时的错误。然后解锁所有单元格,所以只有指定的范围被锁定,没有别的。然后锁定指定范围。然后它重新保护 sheet.
编辑 根据 psyduck 的评论,合并单元格在处理范围时是一个问题。在这种情况下,两列已完全合并,因此可以将范围更改为 D1:F9
如果合并的不是整个范围,请执行单独的实例,如下所示:
MySh.Range("D1:D8").Locked = True
MySh.Range("D9:F9").Locked = True
感谢 Mathieu Guindon 的建议。