2016-08-02 133 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

相關問題