2017-01-09 8 views
2

私はいくつかの調査を行っていますが、他の人はこれと同じ問題を抱えていないか、別の目標に到達しようとしています。VBAの選択データ検証を使用して

前回の選択に基づいて無関係な行を非表示にすることを最終目的とするマクロ(以下に掲載)を作成しました。現在のところ、マクロは最終目標を達成することはできますが、私がどのように意図しているのかはかなりわかりません。

選択したときにターゲットセルが空の場合は、ドロップダウン矢印を使用して自分のオプションを選択するか、手動で入力します。しかし、新しいセルを選択したり、Enterキーを押したりして、後でセルから移動しても、マクロはトリガーされません。マクロをトリガーするには、セルを再度アクティブにする必要があります。

この問題は、後でこのセルを変更するオプションをユーザに与えたいということですが、複数のセルをハイライト表示せずに、ターゲットセルの周囲の他の入力に影響するすべての情報を削除することなく、 。

ユーザーがセルから移動するとマクロがトリガーするように指示するコード行がありません。

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' '内のコードを入れて – cyboashu

答えて

1

そして、あなたはそれを知っているだろう、私は老いたGoogle検索に入力する正確な照会のためのアイデアを与えた書き込み:ここで

は私の現在のコードです。

私は、このリンクで私の答えを見つけた:http://www.cpearson.com/excel/WaitFunctions.aspx

私の最終的なコードは以下のようなになります。

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 
関連する問題