网站首页 > 技术文章 正文
引言
利用VBA设计并实现Excel工作表数据的动态查询。功能介绍:
1.当我们点击“动态加载并查询”时,将工作表数据加载到列表框中。同时,我们可以下拉选择查询字段;
2.当我们在文本框实时输入时,列表框将动态显示满足条件的数据。
3.当文本框内容全部清除时,列表框将显示工作表的全部数据。
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
猜你喜欢
- 2024-12-24 Excel VBA 用户窗体设置/一步一步代你设计EXCEL用户+密码登录界面
- 2024-12-24 家庭收支理财管理系统 Access数据库系统课程设计制作实例
- 2024-12-24 Qt 2D绘图:图形视图框架的事件处理与传播
- 2024-12-24 MFC界面库BCGControlBar v32.1 - 可视化管理器和主题升级
- 2024-12-24 DJYGUI系列文章九:GDD消息系统 gd信息
- 2024-12-24 Qt设备识别(简单的密钥生成器) qt设备管理系统
- 2024-12-24 Access开发的《财务经济管理系统》
- 2024-12-24 初级开发人员告诉我:OO 设计模式太复杂而且没用
- 2024-12-24 从零开始学Qt(89):UDP单播和广播
- 2024-12-24 Qt入门阶段之事件 qtc间期延长的临床意义
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)