打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
逐字查询 | VBA实例教程

除非注明,文章均为 战战如疯 原创,转载请保留链接: http://www.zhanzhanrufeng.com/cat4/603.html,VBA交流群273624828。

今天分享一个逐字查询,结果显示到ListView中的例子,代码来自罗刚君的《Excel 2010 VBA编程与实践》。要实现的效果是通过窗体查询,要求在文本框中输入时可以实现逐字的查询,即每输入一个字都会显示相应的查询结果,用到的是窗体的keyup事件。直接看代码

Private Sub UserForm_Initialize() '控件初始化
With ListView1
.ColumnHeaders.Add , , "公司", .Width / 2 '添第1列表头,宽度为listview1宽度1半
.ColumnHeaders.Add , , "金额", .Width / 2 '添第2列表头
.View = lvwReport '报表形式显示
.Gridlines = True '显示网格线
End With
TextBox1.SetFocus '文本框显得焦点
End Sub

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim firstAddress As String, rng As Range, item
ListView1.ListItems.Clear '清除listview所有值
If TextBox1.Text = "" Then GoTo line '如果文本框是空则执行line后面的语句
With Range("a:a") '对A列进行模糊查找
Set rng = .Find(TextBox1.Text, LookIn:=xlValues, lookat:=xlPart)
If Not rng Is Nothing Then '如果找到目标
firstAddress = rng.Address '记录第一个找到单元格的地址
Do
Set item = ListView1.ListItems.Add() '对ListView添加新行
item.Text = rng.Text '第一列显示找到的单元格
item.SubItems(1) = rng.Offset(0, 1).Text
Set rng = .FindNext(rng) '查找下一个
Loop While rng.Address <> firstAddress
End If
End With
line: '指定一个标签,让程序在指定条件下可以跳转到此处继续执行
'让ListView1控件的高度随查到的值的多少而变化,让窗体更美观
'ListView1.Height = ListView1.Font.Size * ListView1.ListItems.Count + 40
'Me.Height = ListView1.Height + 100 '让窗体随ListView1的高度自动变化
End Sub

模糊查询用的是Find方法,给的解释也比较详细,不再多讲。

本节示例文件下载地址: http://pan.baidu.com/s/1hqmrG3q

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel之VBA常用功能应用篇:利用ListView控件实现分页显示效果
Excel VBA 5.28 新番 灵活增加用户名 玩转登录窗体
Excel VBA窗体一秒生成100个文本框
自动完成菜单、代码完成、文字纠错等IntelliSense功能(Pavel Torgashov著,野比译)
VBA常用代码解析(第二十六讲)
在Word中使用VBA宏自动生成试卷的作文格子
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服