Range.Find 方法 (Excel)
在区域中查找特定信息。
注意
有兴趣开发跨多个平台扩展 Office 体验的解决方案吗? 查看新的 Office 外接程序模型。 与VSTO外接程序和解决方案相比,Office外接程序占用的空间较小,您可以使用几乎任何Web编程技术(例如HTML5,JavaScript,CSS3和XML)来构建它们。
语法
表达式.Find (What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
expression 一个表示 Range 对象的变量。
参数
名称 | 必需/可选 | 数据类型 | 说明 |
---|---|---|---|
What | 必需 | Variant | 要搜索的数据。 可为字符串或任意 Microsoft Excel 数据类型。 |
After | 可选 | Variant | 要在其后开始搜索的单元格。 从用户界面搜索时,这对应于活动单元格的位置。 请注意,After 必须是区域内的单个单元格。 请注意,搜索在此单元格之后开始;在方法回绕到此单元格之前,不会搜索指定的单元格。 如果未指定此参数,搜索将在区域左上角的单元格后面开始。 |
LookIn | 可选 | Variant | 可以是下列 XlFindLookIn 常量之一:xlFormulas、xlValues、xlComments 或 xlCommentsThreaded。 |
LookAt | 可选 | Variant | 可以是下列 XlLookAt 常量之一:xlWhole 或 xlPart。 |
SearchOrder | 可选 | Variant | 可以是以下 XlSearchOrder 常量之一:xlByRows 或 xlByColumns。 |
SearchDirection | 可选 | Variant | 可以是以下 XlSearchDirection 常量之一: xlNext 或 xlPrevious。 |
MatchCase | 可选 | Variant | 如果为 True,则搜索区分大小写。 默认值为 False。 |
MatchByte | 可选 | Variant | 仅在选择或安装了双字节语言支持时使用。 如果为 True,则双字节字符仅匹配双字节字符。 如果为 False,则双字节字符匹配其单字节等效字符。 |
SearchFormat | 可选 | Variant | 搜索格式。 |
返回值
一个 Range 对象,它代表在其中找到该信息的第一个单元格。
注解
如果未发现匹配项,此方法返回 Nothing。 Find 方法不会影响所选内容或活动单元格。
每次使用此方法时,都会保存 LookIn、LookAt、SearchOrder 和 MatchByte 的设置。 如果在下次调用此方法时不指定这些参数的值,则使用保存的值。 设置这些参数会更改“查找”对话框中的设置,更改“查找”对话框中的设置会更改省略参数时使用的已保存值。 为避免出现问题,请在每次使用此方法时显式设置这些参数。
使用 FindNext 和 FindPrevious 方法可重复搜索。
当搜索到达指定的搜索区域末尾时,它会绕到该区域开头位置。 若要在发生此绕回时停止搜索,请保存第一个找到的单元格的地址,然后针对此保存的地址测试每个连续找到的单元格地址。
若要查找与更复杂模式匹配的单元格,请将 For Each...Next 语句与 Like 运算符结合使用。 例如,以下代码搜索区域 A1:C5 中使用其名称以字母 Cour 开头的字体的所有单元格。 Microsoft Excel 找到一个匹配项时,会将字体更改为 Times New Roman。
For Each c In [A1:C5] If c.Font.Name Like "Cour*" Then c.Font.Name = "Times New Roman" End If Next`
示例
此示例在第一个工作表的单元格区域 A1:A500 中查找包含值 2 的所有单元格,并将整个单元格的值更改为 5。 也就是说,值 1234 和 99299 均包含2,并且单元格的值将变为 5。
Sub FindValue()
Dim c As Range
Dim firstAddress As String
With Worksheets(1).Range("A1:A500")
Set c = .Find(2, lookin:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = 5
Set c = .FindNext(c)
Loop While Not c Is Nothing
End If
End With
End Sub
本示例在第一个工作表的单元格区域 A1:A500 中查找包含子字符串 “abc” 的所有单元格,并将这些单元格的值替换为 “xyz”。
Sub FindString()
Dim c As Range
Dim firstAddress As String
With Worksheets(1).Range("A1:A500")
Set c = .Find("abc", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = Replace(c.Value, "abc", "xyz")
Set c = .FindNext(c)
Loop While Not c Is Nothing
End If
End With
End Sub
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。