Excel VBA选择更改与数据验证

Excel VBA选择更改与数据验证,excel,vba,selectionchanged,Excel,Vba,Selectionchanged,我一直在做一些研究,但其他人并没有像我一样在这方面遇到同样的问题,或者一直试图达到一个不同的目标 我写了一个宏(发布在下面),最终目标是根据用户先前的选择隐藏不相关的行。目前宏将实现最终目标,但不完全符合我的预期 如果选择时目标单元格为空,我可以使用下拉箭头选择我的选项或手动键入。但是,通过选择新单元格或按enter键离开单元格后,不会触发宏。要触发宏,我必须重新激活单元格 问题是,我想让我的用户选择以后更改此单元格,但如果不高亮显示多个单元格并删除可能影响目标单元格周围其他输入的所有信息,我无

我一直在做一些研究,但其他人并没有像我一样在这方面遇到同样的问题,或者一直试图达到一个不同的目标

我写了一个宏(发布在下面),最终目标是根据用户先前的选择隐藏不相关的行。目前宏将实现最终目标,但不完全符合我的预期

如果选择时目标单元格为空,我可以使用下拉箭头选择我的选项或手动键入。但是,通过选择新单元格或按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

你难道不知道吗,写这篇文章让我想到了正确的查询输入到谷歌搜索引擎

我在这个链接上找到了我的答案:

我的最终代码如下所示:

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

将代码放入
工作表\u更改