loading...


loading...


公告
loading...

Google 全球搜索 本站搜索
我的分类(专题)
loading...

日志更新
loading...

最新评论
loading...

留言板
loading...

链接

Blog信息
loading...




Google 网上论坛 Beta 版
订阅 excelblogger
电子邮件:
访问此论坛





my e-mail:xhdsxfjy@163.com



仿Google输入框——快速查找列表框中的项目
fanjy 发表于 2008-10-7 15:28:00

在使用Google搜索时,当在输入框中输入时,下方会出现相关条目供选择,以方便快速输入。下面,我们在Excel用户窗体中使用文本框和列表框来仿造这样的效果。
有时,当用户窗体中的列表框包含大量的项目时,我们必须拖动其滚动条来查找相应的项目。然而,可以利用一些技巧快速找到所需的项目。
如图1所示,在用户窗体中,放置有两个控件,上方为一名为txtFind的文本框,下方为一名为lbxData的列表框,列表框的数据来自工作表Data的列A中的数据。

图1
当我在上方的文本框txtFind中输入“excel vba”后,下方的列表框lbxData将只出现包含有“excel vba”的条目,如图2所示。

图2
实现上述效果的VBA代码如下:
Option Explicit
Dim varData

Private Sub txtFind_Change()
    Dim i As Long
    Dim strFind As String
    
    strFind = “*” & UCase(Me.txtFind.Text) & “*”
    
    With Me.lbxData
        .List = varData
        For i = .ListCount - 1 To 0 Step -1
            If Not UCase(.List(i)) Like strFind Then
                .RemoveItem i
            End If
        Next i
    End With
End Sub

Private Sub UserForm_Initialize()
    Dim lLast As Long
    Dim rng As Range
    
    lLast = Sheet1.Range(”A” & Cells.Rows.Count).End(xlUp).Row
    varData = Sheet1.Range(”A1:A” & lLast)
    
    Me.lbxData.List = varData
End Sub


我们可以将UserForm_Initialize代码块中的代码Me.lbxData.List = varData删除,这样当在文本框txtFind中输入时,只要输入的数据符合列表框包含的数据,列表框中将自动出现相关条目并随着输入的进一步具体条目相应减少至完全匹配输入的数据,如图3、4、5所示。

图3:初始化后的用户窗体

图4:开始输入后,列表框中的条目随着文本框中输入的数据而变化

图5:文本框中的数据越具体,列表框中的条目也越少且与文本框输入相匹配
此外,在Excel 2000及以后的版本中,VBA提供了一个Filter函数,使用该函数,也能实现上述效果。代码如下:
Option Explicit
Private Sub txtFind_Change()
    Dim varData As Variant
    
    varData = Range(”A1″, Cells(Rows.Count, 1).End(xlUp)).Value
    varData = Application.Transpose(varData)
    
    varData = Filter(SourceArray:=varData, _
                   Match:=txtFind.Value, _
                   Include:=True, _
                   Compare:=vbTextCompare)
    
    Me.lbxData.List = varData

End Sub

Private Sub UserForm_Initialize()

    Me.lbxData.List = Range(”A1″, Cells(Rows.Count, 1).End(xlUp)).Value
End Sub

阅读全文 | 回复(0) | 引用通告 | 编辑
 


发表评论:

    大名:
    密码:
    主页:
    标题:
    loading...


fanjy的博客

Powered by Oblog.