在Excel VBA中locking特定的单元格

我目前正在使用一个macros。

目的一旦在列L中有一个值,我需要在相关行中的单元格locking。 但是,这不应该locking整个工作表,只是单元格。

代码下面是我一直在玩的代码。 我正在尝试修改代码,以达到上述目的。

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 

在这里输入图像说明

如果列L中有date,则将被locking的单元格为黄色

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

除非您保护表格,否则仅locking单元格不起作用。 首先,解锁表格中的所有单元格,然后尝试以下操作:

 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 

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

 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