【问题标题】:Search entire workbook VBA搜索整个工作簿 VBA
【发布时间】:2021-04-03 00:25:09
【问题描述】:

我有一个包含许多隐藏工作表的 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 次。如何返回字符串的所有匹配项,而不仅仅是每个工作表上的第一个匹配项?

【问题讨论】:

标签: excel vba


【解决方案1】:

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

我会:

  • 将此代码放入while循环中
  • 在字典中存储每个结果的行和列索引,并在循环开始时验证每个找到的行/列
  • 如果已“找到”特定行/列,则退出循环
  • 转到下一张

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2020-11-21
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 2016-06-30
    相关资源
    最近更新 更多