Excel 实现智能输入精确匹配 让可供选择的条目自动减少
随着输入文本的逐步增多,供选择的条目会逐渐自动减少,直至精确匹配,如下图1所示。
图1
其实,实现上述效果的过程很简单。
将数据放置在工作表Sheet1的列A中,如图2所示。
图2
创建动态的名称Data,如图3所示。
图3
在VBE中,创建一个如图4所示的用户窗体,上方用于输入的文本框命名为txtFind,下方用于显示的列表框命名为lbxData。
图4
在用户窗体模块中,输入代码:
'完美Excel 创建
'微信公众号: excelperfect
PrivateSub txtFind_Change()
Dim i As Long
Dim strFind As String
strFind = "*" &UCase(Me.txtFind.Text) & "*"
With Me.lbxData
.List = Application.Transpose([Data])
For i = .ListCount - 1 To 0 Step -1
If Not UCase(.List(i)) Like strFindThen
.RemoveItem i
End If
Next i
End With
EndSub
说明:
在文本框中输入内容时,VBA会即时将输入的内容和列表框中的数据进行比较,并移除不匹配的数据。
也可以在代码中使用VBA的Filter函数,达到同样的效果:
'完美Excel 创建
PrivateSub txtFind_Change()
Me.lbxData.List =Filter(SourceArray:=Application.Transpose([Data]), _
Match:=txtFind.Value, _
Include:=True, _
Compare:=vbTextCompare)
EndSub
扩展
收集用户输入的数据:如果用户输入的数据不在已有列表中,那么可以将该数据自动放置到列表中,这样,再次输入时就会出现该数据