搜索整个工作簿 VBA

时间:2020-12-24 15:22:01

标签: excel vba

我有一个包含许多隐藏工作表的 Excel 工作簿,我想在所有工作表中搜索特定字符串。我不想取消隐藏所有工作表并使用 Excel 搜索功能,因为很难跟踪哪些工作表应该隐藏,哪些不应该隐藏。我编写了以下代码来尝试使用 VBA 搜索所有工作表:

Sub SearchWorkbook()

Dim WS_Count As Integer
Dim I As Integer
Dim WS As Worksheet
Dim r As Range

WS_Count = ActiveWorkbook.Worksheets.count

For I = 1 To WS_Count
        
    Set WS = ActiveWorkbook.Worksheets(I)
    
    With WS
        Set r = .Cells.Find(What:="string I want to find", After:=.Cells(1), LookIn:=xlValues, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
    End With
    If Not r Is Nothing Then
        Debug.Print "Found at " & WS.Name & " " & r.address
    End If

Next I

End Sub

当我运行它时,每个工作表最多得到一个搜索结果,但我知道有一个工作表,其中字符串出现了 3 次。如何返回字符串的所有匹配项,而不仅仅是每个工作表上的第一个匹配项?

1 个答案:

答案 0 :(得分:0)


Excel 的 find 函数总是只选择 1 个结果,总是第一个。
如果要查找符合条件的多个单元格,则需要输入短语 `Cells.FindNext(After:=ActiveCell).Activate`
进入一个循环 - 它将选择/指示下一个发现。

我会:

  • 将此代码放入while循环
  • 在字典中存储每个发现的行和列索引,并在循环开始时验证每个找到的行/列
  • 如果已经“找到”了特定的行/列,则离开循环
  • 转到下一个工作表
相关问题