定义
在指定区域查找特定信息,查找到第一个值停止查找
表达式
- Range.Find(What,[After],[LookIn],[LookAt],[SearchOrder],[SearchDirection],[MatchCase],[MatchByte],[SearchFormat]);
- <单元格区域>.Find (要查找的数据,开始查找的位置,查找的范围类型,完全匹配还是部分匹配,行列方式查找,向前向后查找,区分大小写,全角或半角,查找格式)。
参数
- 名称:What 必选 Variant 要搜索的数据,可为任意数据类型,可使用通配符
- 名称:After 可选 Variant after必须是区域中的某个单元格,搜索是从after之后开始的,直到方法绕回此单元格时候,才对此单元格进行搜索.如果不指定参数,搜索从区域左上角开始搜索
- 名称:LookIn 可选 Variant 查找范围,对应[查找与替换]中[查找范围]下拉选项,xlVlues按值查找,xlFormulas按公式查找,xlComments按批注查找
- 名称:LookAt 可选 Variant 完全匹配还是部分匹配,xlWhole,xlPart
- 名称:SearchOrder 可选 Variant 按行查找还是按列查找,xlByRows按行查找,xlByColumuns按列查找
- 名称:SearchaDirection 可选 Variant 搜索的方向,xlNext正向查找,xlPrevious反向查找
- MatchCase 可选 Variant True为区分大小写,默认值为False
- MatchByte 可选 Variant 只在双字节语言使用,True双字节只与双字节字符匹配;False双字节字符可以对等的单字节字符匹配,是否区分全/半角
- SearchFormat 可选 Variant 搜索的格式,true为必须指定的单元格格式,false表示查找的结果可以是任意格式(使用该参数时,必须先行指定格式,Application.FindFormat.属性)
- 在每次使用Find方法后,参数LookIn、LookAt、SearchOrder、MatchByte的设置将保存。如果下次使用本方法时,不改变或指定这些参数的值,那么该方法将使用保存的值。
相关函数
- FindNext(fater)重复查找
findnext必须搭配find使用,前面通过find查找第一个值,后面才能使用findnext
FindNext方法对应于“查找与替换”对话框中的“查找下一个”按钮。可以使用该方法继续执行查找,查找下一个与Find方法中所指定条件的数据相匹配的单元格,返回代表该单元格的Range对象。在使用该方法时,不影响选定区域或活动单元格- FindPrevious(fater)
可以使用该方法继续执行Find方法所进行的查找,查找前一个与Find方法中所指定条件的数据相匹配的单元格,返回代表该单元格的Range对象。在使用该方法时,不影响选定区域或活动单元格。
Sub test1()
'
Dim r As Range
Dim s As String
s = "Hello"
Dim a As Range
'查找第一个内容含有vba的单元格
'Set r = Worksheets(1).Cells.Find("vba")
'查找第一个内容精确为vba的单元格
'Set r = Worksheets(1).Cells.Find(what:="vba", lookat:=xlWhole)
'查找第一个包含大写字母"VBA",且单元格为红色的的单元格
'Application.FindFormat.Interior.Color = vbRed
'Set r = Worksheets(1).Cells.Find(what:=s,lookat:=xlPart, MatchCase:=True, Searchformat:=True)
'找到第一个内容为“GWb”的单元格,并且大小写精确匹配。
Set r = Range("I13")
Do
Set r = Worksheets(1).Cells.Find(what:=s, after:=r, lookat:=xlPart, MatchCase:=False, Searchformat:=False, LookIn:=xlValues)
r.Interior.Color = vbBlue
' Set r = Worksheets(1).Cells.Find(what:=s, after:=a, lookat:=xlPart, MatchCase:=True, Searchformat:=False, LookIn:=xlFormulas)
MsgBox (r.Address())
If r.Address = "$I$13" Then Exit Do
Loop While Not r Is Nothing
MsgBox (r.Address())
End Sub