📜  Excel VBA查找(1)

📅  最后修改于: 2023-12-03 15:00:38.791000             🧑  作者: Mango

Excel VBA查找

简介

Excel VBA是一种编程语言,用于在Microsoft Excel中自动执行各种任务。其中一项常见任务是查找单元格或工作表中的数据。在Excel VBA中,有多种方法可以进行查找。

Range.Find 方法

Range.Find 方法可用于在指定的区域中查找指定的值。以下是其语法:

expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

其中,参数的含义如下:

  • What: 要查找的内容。
  • After: 从何处开始查找。如果省略此参数,则从第一个单元格开始查找。
  • LookIn: 将在何处查找内容。可以是常量值如 xlValues,也可以是单元格区域。
  • LookAt: 匹配方式。可以是常量值如 xlWholexlPart,分别表示全词匹配和部分匹配。默认为 xlPart
  • SearchOrder: 指定范围搜索顺序的常量值。可以是 xlByRowsxlByColumns。默认为 xlByRows
  • SearchDirection: 指定搜索方向的常量值。可以是 xlNextxlPrevious。默认为 xlNext
  • MatchCase: 是否大小写敏感。可以是 TrueFalse。默认为 False
  • MatchByte: 是否区分全角半角字符。可以是 TrueFalse。默认为 False
  • SearchFormat: 指定搜索格式的布尔值。默认为 False

使用示例如下:

Sub FindExample()
    Dim searchRange As Range
    Set searchRange = Worksheets("Sheet1").Range("A1:D10")
    
    Dim foundCell As Range
    Set foundCell = searchRange.Find(What:="John")
    
    If Not foundCell Is Nothing Then
        MsgBox("Found at " & foundCell.Address)
    Else
        MsgBox("Not found")
    End If
End Sub

上述示例在名为"Sheet1"的工作表中的A1:D10范围中查找"John",如果找到则显示其单元格地址,否则显示"Not found"。

Range.FindNext 方法

Range.FindNext 方法可用于在使用Range.Find方法后,继续查找下一个匹配项。以下是其语法:

expression.FindNext(After)

其中,After参数是一个可选参数,指定从哪个单元格后继续查找。默认为null。

使用示例如下:

Sub FindNextExample()
    Dim searchRange As Range
    Set searchRange = Worksheets("Sheet1").Range("A1:D10")
    
    Dim foundCell As Range
    Set foundCell = searchRange.Find(What:="John")
    
    If Not foundCell Is Nothing Then
        Dim firstFound As Range
        Set firstFound = foundCell
        Do
            MsgBox("Found at " & foundCell.Address)
            Set foundCell = searchRange.FindNext(After:=foundCell)
        Loop While Not foundCell Is Nothing And foundCell.Address <> firstFound.Address
    Else
        MsgBox("Not found")
    End If
End Sub

上述示例在名为"Sheet1"的工作表中的A1:D10范围中查找"John",如果找到则显示其单元格地址,同时继续查找下一个匹配项,直到回到第一个匹配项为止。

Range.Find 和 Range.FindNext 方法示例

以下示例演示了如何在工作表中查找单元格并选择它们:

Sub FindAndSelect()
    Dim searchRange As Range
    Set searchRange = ActiveSheet.UsedRange
    
    Dim foundCell As Range
    Set foundCell = searchRange.Find(What:="John")
    
    If Not foundCell Is Nothing Then
        Dim firstFound As Range
        Set firstFound = foundCell
        Do
            foundCell.Select
            Set foundCell = searchRange.FindNext(After:=foundCell)
        Loop While Not foundCell Is Nothing And foundCell.Address <> firstFound.Address
    Else
        MsgBox("Not found")
    End If
End Sub

上述示例在当前活动工作表的全部使用范围中查找"John",如果找到则选择它们。