2017-01-09 15 views
2

저는 약간의 연구를 해왔지만 다른 사람들은 저와 같은 문제가 있거나 다른 목표에 도달하려고 시도하지 않았습니다.VBA 선택 데이터 유효성 검사를 사용하여 변경하십시오.

사용자가 이전에 선택한 선택에 따라 관련없는 행을 숨기는 것이 최종 목표 인 매크로 (아래에 게시 됨)를 작성했습니다. 현재 매크로는 최종 목표를 달성 할 것이지만 내가 의도하는 방식은 아닙니다.

선택시 대상 셀이 비어있는 경우 드롭 다운 화살표를 사용하여 내 옵션을 선택하거나 수동으로 입력 할 수 있습니다. 그러나 나중에 새 셀을 선택하거나 입력을 눌러 셀을 탐색하면 매크로가 트리거되지 않습니다. 매크로를 트리거하려면 셀을 다시 활성화해야합니다.

내 사용자에게이 셀을 나중에 변경할 수있는 옵션을 제공하고 싶지만 여러 셀을 강조 표시하지 않고 대상 셀 주변의 다른 입력에 영향을 줄 수있는 모든 정보를 삭제하지 않으면 선택을 변경할 수 없다는 것입니다. .

일단 사용자가 셀에서 벗어나면 매크로가 트리거되도록하는 코드 라인이 누락되었다고 가정합니다.

여기 내 현재 코드 :

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

     If Target.Address = "$D$3" Then 


      If Target = "Hide" Then 
       Rows("9:13").Select 
       Selection.EntireRow.Hidden = True 

      ElseIf Target = "Don't Hide" Then 
       Rows("9:13").Select 
       Selection.EntireRow.Hidden = False 

      End If 

     End If 

End Sub 
+0

가 Worksheet_Change''의 코드를 넣어 : http://www.cpearson.com/excel/WaitFunctions.aspx

내 마지막 코드는 같은 같습니다

나는이 링크에서 내 대답을 발견 – cyboashu

답변

1

그리고 당신이 그것을 모르는 것, 팔자 'Google 검색에 입력에 대한 올바른 메시지 나에게 아이디어를 준 쓰기.

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

    If Target.Address = "$D$3" Then 
    Dim B As Boolean 
    B = ThisWorkbook.WaitForUserInput(WaitSeconds:=10, _ 
     WaitCell:=Worksheets(1).Range("D3")) 

     If Target = "Hide" Then 
      Rows("9:13").Select 
      Selection.EntireRow.Hidden = True 

     ElseIf Target = "Don't Hide" Then 
      Rows("9:13").Select 
      Selection.EntireRow.Hidden = False 

     End If 

    End If 

End Sub