我刚刚加入了stackoverflow论坛,因为我正在努力解决使用VBA在Excel中锁定行的问题。
基本上需要做的是当一行被填满时它会自动锁定自己从未被改变。
我使用了以下代码:
N = Target.Row
If Intersect(Target, Range("H:H")) Is Nothing Then Exit Sub
If Not Target.Value >= 1 Then Exit Sub
ActiveSheet.Unprotect
Range("A" & N & ":K" & N).Locked = True
ActiveSheet.Protect
活动行已成功锁定,但我收到错误消息:
Apllication-defined or object-defined error
我无法弄清楚该错误的原因是什么。请帮忙!
P.S。代码插入big Sub Worksheet_change
。
答案 0 :(得分:0)
默认情况下,工作表上的所有单元格都已锁定。因此,当您应用ActiveSheet.Protect
时,您将有效锁定所有单元格
在Worksheet_Change事件激活之前和工作表受保护之前,您需要在潜在的UsedRange或整个工作表中取消锁定所有单元格。这是一次性的操作。
要查看此内容并手动解锁单元格,请选择一个范围,然后查看Home&gt; <细胞>格式&gt;格式化单元格......;否则您可以在代码中解锁单元格,请参阅reference here.