搜索框加持的动态查询
上一篇,我们利用VBA窗体设计并实现工作表数据的动态查询(点击链接可快速进入)。在这一篇,我们将直接在Excel工作表上,实现动态筛选查询并即时显现。实现效果如下:
1.我们可以在B1单元格选择查找字段;
2.当我们在E1单元格的搜索框输入时,工作表数据会自动筛选并即时呈现;当清空搜索框内容时,则取消筛选状态并显示全部数据。
实现效果GIF
实现步骤
1.查找字段下拉框
为B1单元格增加数据验证,验证条件设置“允许”为序列,“来源”为=$3:$3。
增加数据验证
2.搜索文本框
依次选择开发工具--->插入--->ActiveX控件,点击“文本框”控件,并拖动放置在E1单元格。
插入“文本框”控件
3.TextBox控件的Change事件
我们双击“文本框”控件,即可直接进入Change事件的VBA编辑区界面。
Private Sub TextBox1_Change()
'设置在搜索之前,先选择查找字段
If Range("B1").Value = "" Then
TextBox1.Text = ""
Exit Sub
End If
'获取工作表数据的筛选列号
Dim fieldColumn As Integer
'选中第三行数据
Range(Range("a3"), Range("a3").End(xlToRight)).Select
fieldColumn = Selection.Find(What:=Range("B1").Value, LookAt:=xlWhole).Column
'筛选搜索的数据
Selection.AutoFilter
ActiveSheet.Range("A3").CurrentRegion.AutoFilter Field:=fieldColumn, Criteria1:="*" & TextBox1.Text & "*"
'激活文本框
TextBox1.Activate
'当文本框内容为空,取消筛选状态
If TextBox1.Text = "" Then
ActiveSheet.Range("A3").CurrentRegion.AutoFilter
End If
End Sub