我想仅保护工作表中的 D1:D9 范围以防止用户进行编辑。但是,我不想保护整张纸。有办法解决这个问题吗?我一直在阅读帖子并尝试实现他们的代码等,但它们似乎都不适合我。非常感谢您的帮助!
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
它会取消对工作表的保护,因此不会在您上次保护它时抛出错误。然后解锁所有单元格,因此仅锁定指定范围,而不锁定其他任何内容。然后它锁定指定的范围。然后它会重新保护纸张。
编辑 根据 psyduck 的评论,合并单元格在处理范围时是一个问题。在这种情况下,两列完全合并,因此范围可以更改为
D1:F9
,如果不是合并的整个范围,请执行单独的实例,如下所示:
MySh.Range("D1:D8").Locked = True
MySh.Range("D9:F9").Locked = True
感谢 Mathieu Guindon 的建议。
我做错了什么? 我收到错误“无法将范围属性设置为“锁定”
For i = 1 To ActiveWorkbook.Worksheets.Count
For j = 1 To 2000
For k = 1 To 500
If ActiveWorkbook.Worksheets(i).Cells(j, k).Interior.color = color
Then
ActiveWorkbook.Worksheets(i).Range(ActiveWorkbook.Worksheets(i).Cells(j,
k), ActiveWorkbook.Worksheets(i).Cells(j, k)).Locked = False
Next k
Next j
Next i