Excel VBA .find命令对我不起作用

时间:2014-10-03 18:17:59

标签: excel excel-vba find vba

我有一张包含大量标签的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

1 个答案:

答案 0 :(得分:1)

这是因为您的单元格对象不是完全限定的。您正在做的是仅搜索活动表。您需要在Ws之前添加Cells,以便在这些工作表中进行搜索

试试这个

Set rng = Ws.Cells.Find(What:=FindString......

LookAt:=xlWhole也完全匹配。对于部分匹配,您必须使用xlPart