Excel从列表中搜索并选择 - 不是下拉列表

时间:2016-04-06 13:23:29

标签: excel-vba vba excel

我在网上看了几个例子。我发现的一切都在组合框下拉。我的老板想要输入excel,例如在 A1 123456 中,然后它必须自动过滤列表中的数据,所有这些都以 123456 开头。然后他选择了他想要的选项并转到A2单元格。

我尝试的所有示例都是针对组合框,这不是他需要的。有人可以指点我正确的方向吗?非常感谢帮助。

1 个答案:

答案 0 :(得分:0)

基于this similar question的答案,我想出了一些应该有用的东西。我最近有类似的要求;我认为这与过滤器的常用UI相比是一种不错的感觉。

我的设置如下:

demo setup

正如@PeterT所提到的,您需要对该特定工作表使用Worksheet_Change事件,如下所示:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim filterField
    filterField = 0

    If Target.Address = "$B$2" Then
        filterField = 1
    ElseIf Target.Address = "$C$2" Then
        filterField = 2
    ElseIf Target.Address = "$D$2" Then
        filterField = 3
    ElseIf Target.Address = "$E$2" Then
        filterField = 4
    End If

    If filterField <> 0 Then
        Call UpdateFilter(filterField, Target.Value)
    End If
End Sub

在代码中可以进行大量的清理和简化,这个版本对于这个特定的例子来说很快而且很脏 - 不应该很难概括,但是如果你需要帮助,请发表评论。

您需要更多VBA来更新过滤器:

Public Sub UpdateFilter(filterField, strValue)

    If strValue = "" Then
        Range("B4").AutoFilter field:=filterField, Criteria1:="<>"
    Else
        strValue = strValue & "*"
        Range("B4").AutoFilter field:=filterField, Criteria1:=strValue
    End If
End Sub

最终结果如下:

Full Text

添加&#39; *&#39;到字符串的末尾允许部分匹配(&#34;开始......和#34;):

Partial Text