锁定excel VBA中的特定单元格

时间:2017-10-13 14:35:20

标签: excel vba excel-vba

我目前正在处理一个宏。

目的 目标是,一旦L列中存在值,我需要在隐藏行中的单元格锁定。但是,这不应该锁定整个工作表,只能锁定单元格。

代码 下面是我一直在玩的代码。我正在尝试修改代码,以实现我的目的。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Row = 1 Then
        If Target.Column = 3 Or Target.Column = 5 Then
            Beep
            Cells(Target.Row, Target.Column).Offset(0, 1).Select
        End If
    End If
End Sub

示例 enter image description here

如果列L

中有日期,则要锁定的单元格为黄色

锁定整个工作表不会解决问题的原因是因为任何其他用户都无法将自己的数据输入到工作表中。

2 个答案:

答案 0 :(得分:2)

除非您保护纸张,否则仅锁定单元格无效。首先,解锁工作表中的所有单元格,然后尝试:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 12 Or Target.Row = 1 Then Exit Sub

    Range(Cells(Target.Row, 2), Cells(Target.Row, 11)).Locked = True
    ActiveSheet.Protect
End Sub

答案 1 :(得分:0)

使用实际密码更改第一行代码中的密码以取消保护工作表。

Const PW As String = "123"

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
Dim r As Long
If Target.Column = 12 And Target.Row > 1 Then
    ActiveSheet.Unprotect Password:=PW
    r = Target.Row
    If Target <> "" Then
        Range("B" & r & ":K" & r).Locked = True
    Else
        Range("B" & r & ":K" & r).Locked = False
    End If
    ActiveSheet.Protect Password:=PW
End If
End Sub