如何根据条件使用整个列的vb代码

我想基于前一个单元格的条件禁用Excel中的一个单元格,例如,如果A3 =“xyz”,那么B3 =禁用,我通过以下代码实现了这一点:

Private Sub Worksheet_Change(ByVal Target As Range) If Target <> Range("A3") Then Exit Sub ActiveSheet.Unprotect If Range("A3").Value = "CNS" Then Range("B3").Locked = True End If If Range("A3").Value = "APL" Then Range("B3").Locked = False End If ActiveSheet.Protect End Sub 

现在我想为整个A列使用这个代码。 如果我inputA4A5 ,则相应的B4B5应该被禁用。

这应该工作得很好:

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub Application.EnableEvents = False If Not Application.Intersect(Target, Me.Columns(1)) Is Nothing Then ActiveSheet.Unprotect Select Case UCase(Target.Value) Case Is = "CNS" Target.Offset(0, 1).Locked = True Case Is = "APL" Target.Offset(0, 1).Locked = False Case Else MsgBox "Value not covered by the program", vbInformation + vbOKOnly End Select ActiveSheet.Protect Else End If Application.EnableEvents = True End Sub