【发布时间】: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 次。如何返回字符串的所有匹配项,而不仅仅是每个工作表上的第一个匹配项?
【问题讨论】:
-
看看
Range.FindNext方法。这可用于在工作表中查找多个匹配项。 docs.microsoft.com/en-us/office/vba/api/excel.range.findnext -
也值得使用
For Each WS in ThisWorkbook.Worksheets...Next WS而不是数张数。