2016-08-02 91 views
2

请找到下面的代码。我不确定我的代码在哪里出错。 我的目的是检查D44单元格中的值(下拉列表),并基于值锁定/解锁D45单元格。基于其他单元上的值锁定单元格

价值观D44是NO,13 fracto,18 fracto,任何其他Fracto” 用户应该能够编辑只有在D44单元格的值设置为单元格D45 “任何其他Fracto”。

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 

回答

3

除非下拉列表是ActiveX控件,否则需要通过事件处理函数Worksheet_Change来做到这一点,而且您只有两种情况:1)允许用户编辑的情况(“任何其他缺陷”)和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 
+0

感谢您的输入。我正在使用验证列表,我有一个解释。如果用户在下拉列表中选择“否”,我想清除单元格D45的内容。例如,如果我选择“任何其他Fracto”并在D45中输入,并且稍后他将值恢复为“NO”。我想确保输入D45被清除。请建议 – sady

+0

我忘了在答案中包含该内容,请参阅修改后的答案。 –

+0

超级感谢! :-) – sady

相关问题