'启动窗体时执行,功能是对窗体中的ListView1控件进行基本设置
Private Sub UserForm_Initialize()
With ListView1
.ColumnHeaders.Add , , "姓名", 60'添第一列表头,宽度为60
.ColumnHeaders.Add , , "语文", 55'添第二列表头,宽度为55
.ColumnHeaders.Add , , "数学", 55'添第三列表头,宽度为55
.View = lvwReport'报表形式显示ListView1控件
.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'声明需要用到的变量
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() '对ListView1控件添加列表项
Item.Text = rng.Text'第一列显示查到的单元格字符
Item.SubItems(1) = rng.Offset(0, 1).Text '第二列显示右移一个单元格
Item.SubItems(2) = rng.Offset(0, 2).Text '第三列显示右移两个单元格
Set rng = .FindNext(rng)'查找下一个
Loop While rng.Address <> firstAddress
End If
End With
line:'指定一个标签,让程序在指定条件下可以跳转到此处继续执行
'让ListView1控件的高度随查到的值的多少而变化,从而让窗体更美观
ListView1.Height = ListView1.Font.Size * ListView1.ListItems.Count + 20
Me.Height = ListView1.Height + 70'让窗体随ListView1的高度自动变化
End Sub