php多个表中查找数据_Excel实战技巧74: 在工作表中创建搜索框来查找数据

学习Excel技术,关注微信公众号:

excelperfect

本文主要讲解如何创建一个外观漂亮的搜索框,通过它可以筛选数据并显示搜索结果。

如下图1所示,在数据区域上方放置有一个文本框,用来输入要搜索的文本,其名称重命名为“MySearch”;一个用作按钮的矩形形状,点击它开始搜索并显示结果;两个选项按钮窗体控件,用来选择在数据区域的哪列进行搜索。

64064d03523af16d5322196cf72bf290.png图1

在VBE中,插入一个标准模块,输入代码:

Sub SearchData()    Dim optButton As OptionButton    Dim strButtonName As String    Dim wks As Worksheet    Dim lngField As Long    Dim rngData As Range    Dim vSearch As Variant       '赋值工作表变量    Set wks = ActiveSheet       '取消筛选    On Error Resume Next    wks.ShowAllData    On Error GoTo 0       '数据区域(包括列标题)    Set rngData = wks.Range("B5:F30")    '对于表,可使用下面的代码    'Set rngData = wks.ListObjects("表1").Range       '获取用户要搜索的文本    vSearch =wks.Shapes("MySearch").TextFrame.Characters.Text    '如果搜索框为ActiveX控件,可用下面的代码    'vSearch =wks.OLEObjects("MySearch").Object.Text    '如果搜索框为单元格输入,可用下面的代码    'vSearch = wks.Range("A1").Value       '遍历选项按钮    For Each optButton In ActiveSheet.OptionButtons        If optButton.Value = 1 Then            strButtonName = optButton.Text            Exit For        End If    Next optButton       '确定筛选字段    On Error GoTo errH    lngField = Application.WorksheetFunction.Match(strButtonName,rngData.Rows(1), 0)    On Error GoTo 0       '筛选数据    rngData.AutoFilter Field:=lngField, _      Criteria1:="=*" & vSearch& "*", _      Operator:=xlAnd         '清除搜索字段   wks.Shapes("MySearch").TextFrame.Characters.Text =""    '如果搜索框为ActiveX控件,可用下面的代码   'wks.OLEObjects("MySearch").Object.Text = ""    '如果搜索框为单元格输入,可用下面的代码    'wks.Range("A1").Value =""       Exit Sub   errH:    MsgBox "在单元格区域" &rngData.Rows(1).Address & _      "中,没有找到列标题["& strButtonName & "]." & _      vbNewLine & "请检查.",vbCritical, "标题名没发现!"End Sub

在代码中,对要搜索的文本使用了通配符,因此可以搜索部分匹配的文本。此外,对数据区域使用了“硬编码”,你可以将其修改为实际的数据区域。代码运行的结果如下图2所示。

2489f4446ab1893fa1f72a31b33875ba.gif

图2

我们在上面的基础上再进行扩展,让搜索字段更多一些,如下图3所示,可以搜索含有数字的列。

3372c161a12acd28d1903fe67e8c8c82.gif

图3

代码如下:

Sub SearchDataPlus()    Dim optButton As OptionButton    Dim strSearch As String    Dim strButtonName As String    Dim wks As Worksheet    Dim lngField As Long    Dim rngData As Range    Dim vSearch As Variant       '赋值工作表变量    Set wks = ActiveSheet       '取消筛选    On Error Resume Next    wks.ShowAllData    On Error GoTo 0       '数据区域(包括列标题)    Set rngData = wks.Range("B5:F30")    '对于表,可使用下面的代码    'SetrngData = wks.ListObjects("表1").Range       '获取用户要搜索的文本    vSearch =wks.Shapes("MySearch").TextFrame.Characters.Text    '如果搜索框为ActiveX控件,可用下面的代码    'vSearch =wks.OLEObjects("MySearch").Object.Text    '如果搜索框为单元格输入,可用下面的代码    'vSearch = wks.Range("A1").Value       '确定用户要搜索文本还是数值    If IsNumeric(vSearch) = True Then        strSearch = "=" & vSearch    Else        strSearch = "=*" &vSearch & "*"    End If       '遍历选项按钮    For Each optButton InActiveSheet.OptionButtons        If optButton.Value = 1 Then            strButtonName = optButton.Text            Exit For        End If    Next optButton       '确定筛选字段    On Error GoTo errH    lngField =Application.WorksheetFunction.Match(strButtonName, rngData.Rows(1), 0)    On Error GoTo 0       '筛选数据    rngData.AutoFilter Field:=lngField, _      Criteria1:=strSearch, _      Operator:=xlAnd         '清除搜索字段   wks.Shapes("MySearch").TextFrame.Characters.Text =""    '如果搜索框为ActiveX控件,可用下面的代码   'wks.OLEObjects("MySearch").Object.Text = ""    '如果搜索框为单元格输入,可用下面的代码    'wks.Range("A1").Value =""       Exit Sub   errH:    MsgBox "在单元格区域" &rngData.Rows(1).Address & _      "中,没有找到列标题["& strButtonName & "]." & _      vbNewLine & "请检查.",vbCritical, "标题名没发现!"End Sub

在编写好代码后,将宏指定给表示按钮的矩形形状。在形状中单击右键,如下图4所示。

01181e33688d8170efc12f601c2e8e7e.png

图4

选取“指定宏”命令,在“指定宏”对话框中选择宏名,如下图5所示。

d42ab4de6f0cc6252b8d219aabb31097.png

图5

可以在此基础上进一步添加功能,例如,在搜索完成后,我想恢复原先的数据,可以在工作表中再添加一个代表按钮的矩形形状,如下图6所示。

8ddf26bfa593dc23b6f83af3639066c7.png

图6

同时,编写下面的代码来链接到该矩形:

Sub ClearSearch()    On Error Resume Next    ActiveSheet.ShowAllData    On Error GoTo 0End Sub

至此,功能已全部实现!但细心的朋友可能发现,由于我们使用的是文本框和形状,因此会出现Excel的编辑形状线,特别是输入文本后,单击形状前,都需要在其他单元格中单击一下,才能再单击形状。这可能会带来不便!你可以使用ActiveX控件,或者直接使用单元格,或者使用快捷键来执行宏。在我们编写的代码中,有很多注释掉的代码语句,可供参考。

3db818af143f05771ad8b8ddd3c5f1bd.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx的配置实例(反向代理实例 )

目录 反向代理实例 1.实现效果 2.准备工作 (1)准备两个服务器,一个8080端口,一个 8081端口 (2)创建文件夹和测试页面 3.反向代理具体配置 (1)找到 nginx 配置文件&#xff0…

Spring框架概述(快速入门)

Spring 框架概述: 目录 Spring 框架概述: 1.Spring 是轻量级的开源的 javaEE 框架 2.Spring 有两个核心部分:IOC 和 AOP: 3.Spirng 特点: 4.Spring 的下载 5.接下来,通过一个小例子来掌握spring入门…

初学者怎么自学python编程_怎样自学python编程?从零开始学习python,400集免费教程!...

作为小白,在学习Python的时候,必然会走一定的弯路,有人在弯路上走丢了,有人走出了弯路。我就是属于还未走出弯路的同学,所以我想谈谈我的Python学习之路。 01先了解一下什么是python‍? Python 是一种通用的…

IOC容器(底层原理解读)

IOC的概念和原理 目录 IOC的概念和原理 1.什么是IOC (1)控制反转: (2)使用IOC的目的:降低耦合度 (3)IOC解耦过程图解 2.IOC的底层原理 3.IOC接口 (1&#xff09…

python怎么画图片 wafer map_Python wafer_map包_程序模块 - PyPI - Python中文网

晶圆图 绘制一张晶圆图。用于半导体加工和分析。 内容安装 用法键盘快捷键和鼠标用法rel"nofollow">键盘快捷键和鼠标用法 注意事项当前能力 更改日志 功能鼠标和键盘快捷键! 知道半M1-0302晶圆尺寸! 你可以改变颜色! 放大缩小&…

IOC操作Bean管理XML方式(创建对象和set注入属性)

目录 1.什么是 Bean 管理: (1)通过 Spring 创建对象 (2)通过 Spring 注入属性 2.IOC 操作 Bean 管理有两种方式: (1)基于 xml 配置文件方式实现 (1.1)基…

c# 结构体 4字节对齐_【专题4:平时遇到的问题】 之 【3.由结构体字节对齐引发的通信故障】...

希望本是无所谓有,无所谓无的,这正如脚下的路,其实地上本没有路,走的人多了,也便成了路....原创不易,文章会持续更新,感谢您的关注1.问题由来MCU给上位机发送的一帧数据中,总是多一个…

android 全局hook_【Hook】实现无清单启动Activity

引子Hook技术在android开发领域算是一项黑科技,那么一个新的概念进入视线,我们最关心的3个问题就是,它是什么,有什么用,怎么用本系列将由浅入深 手把手讲解这三大问题。本文是第三篇, 高级篇。前面两篇Hook…

IOC操作Bean管理XML方式(有参构造注入属性)

IOC操作Bean管理XML方式 目录 有参构造注入属性 (1)步骤(创建类,定义属性,创建属性对应的有参构造方法): (2)步骤:在Spring 的xml配置文件中进行配置 &a…

python3调用java_Python3-JPype调用Java代码

原博文 2019-12-31 10:54 − ## JPype调用Java代码 ### 安装所需要的库 python pip install JPype1-py3### 准备一个jar包 #### java工程目录 ![](https://img2018.cnblogs.com/blog/1895590/201912/18955... 相关推荐 2019-12-06 14:59 − 近期在Python中使用java语言的时候有…

IOC操作Bean管理XML方式(P名称空间注入)

P名称空间注入(用的不多,但是也是一种方式) 目录 P名称空间注入(用的不多,但是也是一种方式) (1)使用P名称空间注入,可以简化基于xml 配置方式 第一步:添…

textview 结束后释放_等待按键释放,你的代码如何写?

今天,还是一个问题,在QQ群(300384358)里有小伙伴一直在问一个问题,如上图。一个按键控制电机的转动,按键按下后,电机转动,按键释放,电机停止,再加一个按键按下时长的检测&#xff0c…

IOC操作Bean管理XML方式(注入空值和特殊符号)

IOC操作Bean管理XML方式(注入空值和特殊符号) 目录 IOC操作Bean管理XML方式(注入空值和特殊符号) (1)通过null标签注入空值: 标签注入空值 (2)属性值中包含特殊符号…

麦克风增强软件_唱吧麦克风不会唱歌用它唱都好听,《向往的生活》同款麦克风...

当代年轻人的快乐,其实很简单。被工作狠狠虐了千百遍后,只要到KTV吼几嗓子放松一下,就又和这个世界和解了。唱歌,真的是一件解压又治愈的事情。就像《向往的生活》里,何炅、黄磊和其他嘉宾,饭后娱乐就是唱歌…

bert 多义词_广告行业中那些趣事系列15:超实用的基于BERT美团搜索实践

摘要:本篇主要学习和分析BERT在美团搜索排序中的项目实践。首先介绍了业务背景,主要对比了美团搜索业务场景和我们的应用场景;然后讲了下计算query和doc相关性的方法,主要包括计算字面相关性和计算语义相关性,重点介绍…

vba 跳到下一个循环_遍历工作薄和工作表(For Each循环的利用)

今日的内容是“VBA之EXCEL应用”的第三章“工作簿(Workbook)和工作表(Worksheet)对象(Object)”中第三节“遍历工作薄和工作表(For Each循环的利用)”。“VBA之EXCEL应用”这套教程从简单的录制宏的讲解,一直到窗体的搭建,内容丰富,案例众多。…

IOC操作Bean管理XML方式(注入外部bean)

目录 1..注入属性-外部 bean (1)创建两个类 service 类和 dao 类【分别创建两个包存放两个类】 (2)在 service 调用 dao 里面的方法 (3)(后来做法)在Spring 配置文件中进行配置 1…

数据增强 transform_深度学习-Pytorch框架学习之数据处理篇

前言数据是深度学习的核心,大部分论文里都会提到data-driven这个词,也就是数据驱动的意思。基本的模型搭建完成后,如何处理数据,如何将数据送给网络,如何做数据增强等等,对于提高网络的性能都十分重要&…

IOC操作Bean管理XML方式(注入内部 bean 和 级联赋值)

目录 1.注入属性-内部 bean (1)一对多关系:部门和员工 (2)在实体类之间表示一对多关系 (3)在Spring 配置文件中进行配置 2.注入属性-级联赋值 (1)第一种写法类似外部…

单处理机系统的进程调度动态优先_操作系统复习笔记(王道)C2.1

进程与线程一、进程特征和概念前提:允许多个程序并发执行。1.概念PCB(process control block)进程控制块,系统利用 PCB 来描述进程的基本情况和运行状 态,进而控制和管理进程。PCB是进程存在的唯一标志。进程是进程实体的运行过程&#xff0c…