excel动态查询表如何做? 利用VBA实现工作表数据的动态查询的教程

  发布时间:2024-11-25 09:19:35   作者:佚名   我要评论
excel如何在多个工作表中查找某个给定值,当然要求这个给定的值在一个工作表中要是单一的值,如果是多个值我们可以稍微改一下代码即可,我们不再做详细讲解

利用VBA设计并实现工作表数据的动态查询。功能介绍:

  • 1.当我们点击“动态加载并查询”时,将工作表数据加载到列表框中。同时,我们可以下拉选择查询字段
  • 2.当我们在文本框实时输入时,列表框将动态显示满足条件的数据
  • 3.当文本框内容全部清除时,列表框将显示工作表的全部数据

实现效果GIF

UI设计

这里主要使用到ComboBox 、TextBox和ListView控件。

  • 1.ComboBox控件:用于选择“查找字段”,名称设置为cbbField,Style属性设置为:2-fmStyleDropDownList
  • 2.TextBox控件:用于输入查找内容,名称设置为tbSearch
  • 3.ListView控件:用于显示全部或满足条件的工作表数据,名称和相关属性均默认

窗体主界面设计VBA代码

1.定义全局变量-arr数组

'用于保存工作表数据
Dim arr() As Variant

2.窗体初始化事件

Private Sub UserForm_Initialize()
    cbbField.Value = Cells(1, 2)
    '将工作表的单元格数据赋值给arr
    arr = Range("a1").CurrentRegion
    Dim j As Integer
    '从第一列到最后一列
    For j = 1 To UBound(arr, 2)
        '将查找字段添加至复选框
        cbbField.AddItem Cells(1, j)
        '给ListView控件增加标题行
        ListView1.ColumnHeaders.Add , , Cells(1, j), 60
    Next
    With ListView1
        .View = lvwReport
        .Gridlines = True
    End With
    Dim i As Integer
    For i = 2 To UBound(arr, 1)
        Dim item  As ListItem
        Set item = ListView1.ListItems.Add
        item.Text = arr(i, 1)
        For j = 2 To UBound(arr, 2)
            item.SubItems(j - 1) = arr(i, j)
        Next
    Next
    tbSearch.SetFocus
End Sub

3.TextBox控件的Change事件

Private Sub tbSearch_Change()
    '清空ListView的所有项目
    ListView1.ListItems.Clear
    Dim i As Integer, j As Integer
    For i = 2 To UBound(arr, 1)
        If arr(i, cbbField.ListIndex + 1) Like tbSearch.Text & "*" Then
            Dim item  As ListItem
            Set item = ListView1.ListItems.Add
            item.Text = arr(i, 1)
            For j = 2 To UBound(arr, 2)
                item.SubItems(j - 1) = arr(i, j)
            Next
        End If
    Next
End Sub

以上就是利用VBA实现工作表数据的动态查询的教程,希望大家喜欢,请继续关注脚本之家。

相关文章

最新评论