根据A列的值禁用单元格,更新单元格的更改?

时间:2016-07-25 09:07:00

标签: excel vba

我有一个工作表,在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列中的值时都需要运行此代码。

1 个答案:

答案 0 :(得分:0)

我认为问题是由ActiveSheet.Protect命令引起的,它始终保护整个工作表,但解锁的单元格除外。在您的IF语句中,您只是告诉它解锁M1,但锁定所有其余的。

问题的一个解决方案是解锁整个工作表并仅锁定要锁定的单元格,如下所示:

If Range("A1").Value = "AMT" Then
       Range("A1:Z500").Locked = False ´
       Range("D1").Locked = True 
End If

希望这有帮助。