2014-10-03 64 views
0

我有一个包含大量选项卡的Excel 2013表单。每个选项卡都拥有我们公司拥有的不同软件的许可证密钥。然后将许可证绑定到安装的计算机上。我正在编写一个宏,列出找到搜索字符串的所有选项卡。如果我将输入框留空,它将列出所有选项卡。但是如果我输入一些东西来搜索它,它只会显示宏消息的结尾。Excel VBA .find命令不适用于我

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

这是因为您的单元格对象不完全合格。你在做什么只是搜索activesheet。您需要Cells之前添加Ws,使其在这些表中搜索

试试这个

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

LookAt:=xlWhole不完全匹配。部分匹配,你将不得不使用xlPart

+0

这工作完美!我知道它必须是我失踪的小事。非常感谢您的快速响应和帮助。 – 2014-10-03 18:31:22