2016-08-02 2 views
2

아래 코드를 찾으십시오. 내 코드에서 어디서 잘못 될지 모르겠습니다. 본인의 목적은 D44 셀 (드롭 다운 목록)의 값을 확인하고 D45 셀의 잠금/잠금 해제 값을 기준으로합니다. D44에서다른 셀의 값을 기준으로 셀 잠그기

값은 NO없고, 13 fracto, 18 fracto 다른 어떤 Fracto "모든 다른 Fracto" 사용자가 D44 셀의 값에 설정되어있는 경우에만 셀 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 

답변

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 셀의 내용을 지우고 싶습니다. 예 : "Any Fracto"를 선택하고 D45에 입력 한 후 값을 나중에 "NO"로 되돌릴 지 여부. 입력 D45가 지워 졌는지 확인하고 싶습니다. 제발 대답을 – sady

+0

제안 해주세요 답변에 포함시키는 것을 잊어 버렸습니다. 수정 된 답변을 참조하십시오. –

+0

최고 감사합니다! :-) – sady

관련 문제