除非注明,文章均为 战战如疯 原创,转载请保留链接: http://www.zhanzhanrufeng.com/cat4/651.html,VBA交流群273624828。
在工作中我们可能会需要查找符合某些特定格式的单元格,这个功能手动实现的话就是用查找替换对话框中的“格式”选项,这次我们来看下怎么用VBA代码来实现按格式查找。
要按格式查找,首先要设置要查找的格式,例如字体为黑体则是Application.FindFormat.Font.Name='黑体'。
设置好格式之后就用Find命令进行查找,Find的用法和前面讲过的Find用法一致,只是将SearchFormat属性设置为true即可。
在之前讲Find用法时在查找下一个内容时我们用的是FindNext,但是在查找格式时FindNext方法并不适用(虽然录制出来的宏中用的仍然是FindNext),因此我们只能记录当前找到的单元格的位置,然后下次查找时从当前位置向后查找,当找到的单元格和我们第一次找到的单元格相同时就说明已经找完了全表。
Sub SearchFormat()
Dim FirstAdd As String, rng As Range, rngs As Range
Application.FindFormat.Clear
With Application.FindFormat '这里是设置查找的格式
.Font.Name = '黑体'
'.Font.Bold = False
'.Interior.Color = vbRed
End With
With Range('A:A') '查找的区域
Set rng = .Find(What:='', LookIn:=xlFormulas, LookAt:=xlPart, SearchFormat:=True)
If rng Is Nothing Then '找不到内容则退出
Exit Sub
End If
Set rngs = rng
FirstAdd = rng.Address '记录下第一次找到的位置
Do '循环查找
Set rngs = Union(rngs, rng)
Set rng = .Find(What:='', After:=rng, SearchFormat:=True)
Loop Until FirstAdd = rng.Address
rngs.Select
End With
Set rng = Nothing
Set rngs = Nothing
End Sub
本节示例文件下载地址: http://pan.baidu.com/s/1qAiUa。
联系客服