我有一个工作表,在A栏中,我已经验证了" AMT"或" Single"。我试图使它取决于选择哪个on,它会禁用不同列中的单元格。
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="password"
If Range("A1").Value = "AMT" Then
Range("D1").Locked = True
Range("M1").Locked = False
End If
If Range("A1").Value = "Single" Then
Range("D1").Locked = False
Range("M1").Locked = True
End If
ActiveSheet.Protect Password:="password"
End Sub
此代码似乎无法正常工作。当我更改A1中的值时,上面的代码会锁定整个工作表,而不仅仅是我想要禁用的列。
此外,我将拥有1000行数据,因此我需要循环遍历所有包含" AMT"或"单身"在A列中,因此每次用户更改A列中的值时都需要运行此代码。
答案 0 :(得分:0)
我认为问题是由ActiveSheet.Protect命令引起的,它始终保护整个工作表,但解锁的单元格除外。在您的IF语句中,您只是告诉它解锁M1,但锁定所有其余的。
问题的一个解决方案是解锁整个工作表并仅锁定要锁定的单元格,如下所示:
If Range("A1").Value = "AMT" Then
Range("A1:Z500").Locked = False ´
Range("D1").Locked = True
End If
希望这有帮助。