我在网上看了几个例子。我发现的一切都在组合框下拉。我的老板想要输入excel,例如在 A1 123456 中,然后它必须自动过滤列表中的数据,所有这些都以 123456 开头。然后他选择了他想要的选项并转到A2单元格。
我尝试的所有示例都是针对组合框,这不是他需要的。有人可以指点我正确的方向吗?非常感谢帮助。
答案 0 :(得分:0)
基于this similar question的答案,我想出了一些应该有用的东西。我最近有类似的要求;我认为这与过滤器的常用UI相比是一种不错的感觉。
我的设置如下:
正如@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
最终结果如下:
添加&#39; *&#39;到字符串的末尾允许部分匹配(&#34;开始......和#34;):