我必须在excel表中解锁特定范围(D6:BC116) . 它应该能够让其他人编辑这个特定区域 . 所以它应该为他们解锁 . 起初我手动保护整张纸,没有任何代码 . 之后我想取消保护特定区域进行编辑 . 但总有一些问题 . 我有这两个代码 . 第一个代码具有隐藏属性,它只隐藏空单元格 . 其他代码我试图在保护整个工作表后取消保护我要编辑的特定区域 . 由于隐藏属性,我不确定问题是否在第一个代码中?而且我不确定他们是否处于关系中?
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Range("B6:B112")
If cell.Value <> "" Then
cell.EntireRow.Hidden = False
Else
cell.EntireRow.Hidden = True
End If
Next cell
End Sub
Sub UnlockCells()
Worksheets("Sheet1").Range("D6:BC116").Locked = False
Worksheets("Sheet1").Protect
End Sub
当我执行此操作时,我总是得到 "Index out of range"
谢谢!
1 回答
我想你需要在解锁之前取消保护 . 像这样:
关于代码的第一部分 - 确保使用一个未命名为
cell
的变量,因为VBEditor使用了cell
. 将变量命名为rngCell
,myCell
或除cell
之外的任何其他内容 . 并声明如下:Dim rngCell as Range
.最后一点 - 锁定您的工作表并尝试隐藏和取消隐藏行 . 可能吗?如果没有,您就知道错误的原因 .
Edit:
要检查工作表是否受保护,请在Worksheet_Change中尝试: