excel中使用vba制作查找功能控件
excel中使用vba制作查找功能控件
操作方法
- 01
首先我们打开一个工作样表作为例子。
- 02
打开vba编辑器,插入一个新的模块,并在模块编辑窗口中输入以下代码: Sub 查找指定值() Dim result As String, str1 As String, str2 As String Dim c As Range result = Application.InputBox(prompt:="请输入要查找的值:", Title:="查找", Type:=2) If result = "False" Or result = "" Then Exit Sub Application.ScreenUpdating = False Application.DisplayAlerts = False With ActiveSheet.Cells Set c = .Find(result, , , xlWhole, xlByColumns, xlNext, False) If Not c Is Nothing Then str1 = c.Address Do c.Interior.ColorIndex = 4 '加亮显示 str2 = str2 & c.Address & vbCrLf Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> str1 End If End With MsgBox "查找到指定数据在以下单元格中:" & vbCrLf & vbCrLf _ & str2, vbInformation + vbOKOnly, "查找结果" Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub
- 03
我们先对各种变量做定义,result、str1、str2均为字符串,c为单元格区域值。这里大家可能对vba的数据类型不太了解,我解释一下,虽然说是字符串、单元格区域值等我所描述的是借用了它的表示内容,而vba实际的区分是数据容量的大小。比如int整数型是8位字节……
- 04
接着我们将result变量赋值为手动输入数据,使用的是Application.InputBox,并设置提示语句,“请输入要查找的值:”如果其值为false或者是空值,那么直接中止此过程。
- 05
接下来 Application.ScreenUpdating = False Application.DisplayAlerts = False 两句代码是禁止屏幕刷新和禁止显示报错,这两句的作用是为了保证过程运行的兼容性,避免因为表格格式等问题造成的过程运行效率。
- 06
With ActiveSheet.Cells不再多解释,我们赋值c变量为查找的输入内容,查找方式为完全匹配,列搜索,区域内下一个匹配值,不分大小写。大家对照代码看参数解析。
- 07
然后我们对c变量进行判断,如果c不是空值,那么执行当前地址读取并将该单元格高亮绿色显示。并循环执行。因为后面我们是用msgbox进行输出,所以我们将str1赋值到str2中以便输出。
- 08
这里这段代码str2 = str2 & c.Address & vbCrLf详细的给大家解释一下,为什么str2能够进行重复赋值,完全是因为& vbCrLf换行的存在,在这个循环语句中,str2的值是不停的在更新的。