带有数据验证的VBA SelectionChange

时间:2017-01-09 15:28:34

标签: excel vba selectionchanged

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

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

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

1 个答案:

答案 0 :(得分:1)

你不知道吗,写这个给了我正确的询问输入到谷歌搜索的想法。

我在此链接找到了答案: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