VBA 使用FIND也非常方便,下面我们来看一个例子:
Sub VBA_FIND()
Dim searchText As String '声明一个文本变量
Dim startCell As Range '声明一个范围变量
Dim foundCell As Range '声明一个范围变量
searchText = "apple" '赋值搜索文本
Set startCell = Range("A1") '赋值搜索的起始单元格为A1
'执行标准的查找操作
Set foundCell = Cells.Find(What:=searchText, After:=startCell, LookIn:=xlValues, LookAt:=xlPart)
'如果找到匹配项
If Not foundCell Is Nothing Then
MsgBox "The search text '" & searchText & "' was found in cell " & foundCell.Address & "." '弹出消息框
Else '如果未找到匹配项
MsgBox "The search text '" & searchText & "' was not found." '弹出消息框
End If
'执行高级查找操作
Set foundCell = Cells.Find(What:=searchText, After:=startCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
'如果找到匹配项
If Not foundCell Is Nothing Then
MsgBox "The search text '" & searchText & "' was found in cell " & foundCell.Address & "." '弹出消息框
Else '如果未找到匹配项
MsgBox "The search text '" & searchText & "' was not found." '弹出消息框
End If
End Sub
上述代码中,我们声明了三个变量:searchText
,startCell
和 foundCell
。 searchText
存储要搜索的文本。 startCell
存储要从哪个单元格开始搜索。 foundCell
最初设置为 Nothing
,但在查找到匹配项后,我们将其设置为包含该匹配项的单元格。
然后,我们执行了两个不同的 Cells.Find
操作,分别使用标准和高级的参数组合。这些参数说明:
What
: 要在工作表中查找的内容。此参数可以是字符串、数字或公式。After
: 要从其之后开始搜索的单元格。通常可以将此参数设置为指向要搜索的第一个单元格(在本例中是 A1)。LookIn
: 要在哪里查找内容。此参数可以是xlValues
(查找单元格的值)、xlFormulas
(查找单元格的公式)或xlComments
(查找单元格的注释)。LookAt
: 匹配时要根据哪些条件查找。此参数可以是xlWhole
(整体匹配)或xlPart
(部分匹配)。SearchOrder
: 查找时应按行还是按列进行。此参数可以是xlByRows
或xlByColumns
。SearchDirection
: 查找单元格的方向。此参数可以是xlNext
(从开始单元格继续向下或向右查找)或xlPrevious
(从开始单元格继续向上或向左查找)。MatchCase
: 区分大小写匹配。如果设置为True
,则搜索区分大小写;如果设置为False
,则搜索不区分大小写。SearchFormat
: 是否将格式纳入匹配条件。如果设置为True
,则搜索将包括单元格格式;如果设置为False
,则搜索将忽略单元格格式。
高级参数通常用于更精细的搜索,并且可以在一次操作中执行多个搜索。在本例中,我们使用了以下高级参数:
LookIn
: 我们将其设置为xlFormulas
,以便搜索单元格的公式。LookAt
: 我们将其设置为xlWhole
,以仅匹配与搜索文本完全相等的单元格。SearchOrder
: 我们将其设置为xlByRows
,以通过行而不是列来进行搜索。SearchDirection
: 我们将其设置为xlNext
,以从开始单元格继续向下或向右查找。MatchCase
: 我们将其设置为False
,以不区分大小写进行搜索。SearchFormat
: 我们将其设置为False
,以忽略单元格格式。
这些高级参数的组合可以帮助我们更准确地执行搜索操作。