根据其他单元格的值锁定单元格

时间:2016-08-02 03:13:12

标签: vba excel-vba excel

请找到以下代码。我不确定我的代码在哪里出错了。 我的目的是检查D44单元格(下拉列表)中的值,并根据值锁定/解锁D45单元格。

D44中的值为NO,13 fracto,18 fracto,Any Other Fracto" 只有当D44单元格值设置为" Any Other Fracto"时,用户才能编辑单元格D45。

Sub TheSelectCase()
    Select Case Range("D44").Value
          Case "Any Other Fracto"
          Range("D45").Locked = False
          Range("D45").Activate

          Case = "NO" 
           Range("D45").Locked = True
       Range("D45").Clear

      Case <> "NO" Or "Any Other Fracto"
      Range("D45").Locked = True
    End Select
End Sub

1 个答案:

答案 0 :(得分:3)

除非下拉列表是ActiveX控件,否则您需要通过Worksheet_Change事件处理程序执行此操作,而且,您只有两种情况:1)允许用户编辑的情况(“任何其他fracto“)和2)任何其他值,不允许用户编辑。

假设您使用的是验证列表,请在工作表的Worksheet_Change事件中执行此操作:

Private Sub Worksheet_Change(ByVal Target As Range)

    'Exit on any other cell
    If Intersect(Target, Range("D44")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    Dim inputCell As Range
    Set inputCell = Range("D45")
        Select Case Trim(LCase(Target.Value))
            Case "any other fracto"
                inputCell.Locked = False
                inputCell.Activate
            Case Else
            'This handles **ANY** other value in the dropdown
                inputCell.Locked = True
                InputCell.Clear
        End Select

   Application.EnableEvents = True
End Sub