Excel 实现智能输入精确匹配 让可供选择的条目自动减少

网友投稿 633 2022-06-09

随着输入文本的逐步增多,供选择的条目会逐渐自动减少,直至精确匹配,如下图1所示。

 图1

其实,实现上述效果的过程很简单。

将数据放置在工作表Sheet1的列A中,如图2所示。

 图2

创建动态的名称Data,如图3所示。

 图3

在VBE中,创建一个如图4所示的用户窗体,上方用于输入的文本框命名为txtFind,下方用于显示的列表框命名为lbxData。

Excel 实现智能输入精确匹配 让可供选择的条目自动减少

 图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

扩展

收集用户输入的数据:如果用户输入的数据不在已有列表中,那么可以将该数据自动放置到列表中,这样,再次输入时就会出现该数据

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:发送前对Excel 表格进行数据 公式 问题 兼容性等检查以防泄密
下一篇:Excel VBA使用R1C1形式 快速填充空白单元格 与上一个一致
相关文章