欢迎转发和点一下“在看”,文末留言互动!
置顶公众号或设为星标及时接收更新不迷路
小伙伴们好,今天来和大家分享一道VBA的操作技巧。EXCELer们都知道,如果我们想要在工作表或工作簿中查找一项内容,最简单的方法就是利用自带的查找功能—CTRL+F,然后输入查找值,确定查找范围以及其它的一些限定条件后,很轻松地就可以找到相应的内容了。
现在学习了VBA,那么如何在VBA中实现这一个功能呢?今天,就来带大家实际操作一下,如何利用VBA来实现查找功能。
这是一份发票清单,我们要利用VBA查找所有的“CNY”并对其上色。同时设置整个使用区域的边框。效果如下图。
01
录制宏
工作表中的绝大多数操作,都可以录制宏,得到一段代码。下面就来录制一段查找代码。
确定后正常操作查找“CNY”的过程。操作结束后记得停止录制。
录制完成后得到下面这样一段代码。
这就是利用录制功能得到的一段最简单、最基础的实现查找功能的代码。接下来我们就要在这段代码的基础上加以完善,实现题目的要求。
02
代码完善
完整代码如下:
Sub 宏1()
Dim rng As Range, s As String, c, firstaddress
s = InputBox("请输入要查找的内容")
Set c = Cells.Find(What:=s, After:=[A1])
If c Is Nothing Then
MsgBox ("没有找到")
Exit Sub
End If
firstaddress = c.Address
Do
c.Interior.Color = 49407
Set c = Cells.FindNext(c)
Loop While Not c Is Nothing And firstaddress <> c.Address
Set rng = Sheet1.UsedRange
rng.Select
rng.Borders(xlDiagonalDown).LineStyle = xlNone
rng.Borders(xlDiagonalUp).LineStyle = xlNone
rng.Borders(xlEdgeLeft).LineStyle = xlContinuous
rng.Borders(xlEdgeTop).LineStyle = xlContinuous
rng.Borders(xlEdgeBottom).LineStyle = xlContinuous
rng.Borders(xlEdgeRight).LineStyle = xlContinuous
rng.Borders(xlInsideVertical).LineStyle = xlContinuous
rng.Borders(xlInsideHorizontal).LineStyle = xlContinuous
End Sub
录制得到的那一整串代码可以整理成下面这一段。
Cells.Find(What:="CNY", After:=ActiveCell).Activate
Cells表示在整个工作表内查找。
Find方法的第一个参数What:="CNY"表示查找什么,这里可以给它一个变量,使得查找功能更加灵活。
Find方法的第二个参数After:=ActiveCell表示从哪里开始找。可以设定为一个固定值,比如说单元格A1。
因此这部分可以写成下面这样
s = InputBox("请输入要查找的内容")
定义变量s,利用Inputbox来输入需要查找的内容。.
Set c = Cells.Find(What:=s, After:=[A1])
定义对象变量c,令c为查找到的第一个单元格
If c Is Nothing Then
MsgBox ("没有找到")
Exit Sub
End If
如果Inputbox中输入的内容没有查找到,此时变量c就是一个空值,则利用Msgbox返回消息“没有找到”并退出sub过程。
firstaddress = c.Address
Do
c.Interior.Color = 49407
Set c = Cells.FindNext(c)
Loop While Not c Is Nothing And firstaddress <> c.Address
当Inputbox中输入的内容可以找到时,则令变量firstaddress等于找到的第一个单元格的地址。
接下来开始循环过程,对找到的单元格上色,并查找下一个相同内容的单元格。
c.Interior.Color = 49407可以依靠录制得到代码
Set c = Cells.FindNext(c)这是查找下一个单元格,利用了FindNext方法。
Not c Is Nothing And firstaddress <> c.Address是循环条件,当不满足时就结束循环。
到此为止,查找重复的单元格并上色的操作已经完成了。下面要开始边框设置了。
Set rng = Sheet1.UsedRange
令变量rng为已使用区域
rng.Select
选择该区域
rng.Borders(xlDiagonalDown).LineStyle = xlNone
rng.Borders(xlDiagonalUp).LineStyle = xlNone
rng.Borders(xlEdgeLeft).LineStyle = xlContinuous
rng.Borders(xlEdgeTop).LineStyle = xlContinuous
rng.Borders(xlEdgeBottom).LineStyle = xlContinuous
rng.Borders(xlEdgeRight).LineStyle = xlContinuous
rng.Borders(xlInsideVertical).LineStyle = xlContinuous
rng.Borders(xlInsideHorizontal).LineStyle = xlContinuous
边框设置。这部分也是通过录制宏来得到的。过程这里就不重复了。录制的宏中使用了大量的with语句,看起来比较复杂。实际上我们只需要将最有用的语句摘录出来就可以了。
本期内容练习文件提取方式:
链接: https://pan.baidu.com/s/1auAry1X2p91LqmIRJwSr0w?pwd=b25x 提取码: b25x
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助
我就知道你“在看”