我有一张包含大量标签的Excel 2013表格。每个选项卡都包含我们公司拥有的不同软件的许可证密钥。然后将许可证绑定到安装它的计算机上。我正在编写一个宏,列出了搜索字符串所在的所有选项卡。如果我将输入框留空,它将列出所有选项卡。但是,如果我输入要搜索的内容,它只会显示宏消息的结束。
Sub TempMacro()
Dim ws As Worksheet
SearchListRow = 3
Dim rng As Range
Dim FindSting As String
FindString = InputBox("Enter a Search value")
For Each ws In ThisWorkbook.Sheets
'Set Search Function
Set rng = Cells.Find(What:=FindString, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
If Not rng Is Nothing Then
'Record tab name where string was found
Sheets("LISTS").Range("O" & SearchListRow) = ws.Name
'incriment row
SearchListRow = SearchListRow + 1
Else
'MsgBox ("Nothing found in " & wb.Name)
End If
Next ws
MsgBox ("End Macro")
End Sub
答案 0 :(得分:1)
这是因为您的单元格对象不是完全限定的。您正在做的是仅搜索活动表。您需要在Ws
之前添加Cells
,以便在这些工作表中进行搜索
试试这个
Set rng = Ws.Cells.Find(What:=FindString......
LookAt:=xlWhole
也完全匹配。对于部分匹配,您必须使用xlPart