问题:当B2到B10这些单元格中有数值=“按合同总额付款”的单元格,则自动锁定这个单元格前面一个单元格。比如:如果是B8=“正确",则C8就锁定。其他单元格也是这样。帮忙看看哪里错了啊?谢谢!(我是菜鸟)
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
Dim i As Long
For i = 2 To 10
If Range("B" & i) = "按合同总额付款" Then
Range("C" & i).Locked = True
Else
Range("C" & i).Locked = False
End If
Next i
ActiveSheet.Protect DrawingObjects:=ture, Contents:=True, Scenarios:=True
End Sub
不好意思,上面写错了,应该是:如果是B8=“按合同总额付款",则C8就锁定。
试过了,但是为什么选择第一列的单元格的时候,会出现错误呢?求解,谢谢啦!
追答虽然出错,但我的电脑上运行并不影响效果,程序并没有出现错误提示框。如果如下修改就不会出错了。见附件
If Target.Column = 3 Then If Target(1).Offset(0, -1) = "按合同总额付款" Then Target.Offset(0, 1).Select
代码要放在需要保护的工作表项目里
就是一个单元格为某个值时,右边的单元格锁定,不能编辑。
为什么我A2= "按合同总额付款"时,B2没有锁定呢。还是我的操作有问题?
尽量不要大范围修改单元格,否则可能会卡久点。
第一次运行代码前,全选单元格,将单元格解锁。