2011-10-03 65 views
2

我有这个Excel工作簿,我想在Sheet1中搜索特定的字符串。如果发现它,请输入一个新值。但是,该表非常庞大,所以我认为循环遍历每个单元格并不是非常有效。那么,我可以通过一个范围进行搜索并找到它吗?Excel VBA - 在工作表中搜索字符串

这是我到目前为止有:

Dim rngSearchRange as range 

    With ThisWorkbook.Sheets(1) 
     Set rngSearchRange = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row) 
    End With 

我在寻找的字符串是三个值的数组的第一个值。那么,我怎样才能搜索这个范围的特定字符串,找到位置,然后输入一个新的值?

我正沿着这个思路的东西:

Dim rngFindRange as range 
Set rngFindRange = rngSearchRange.Find(var(0), LookIn:=xlValues, lookat:=xlWhole) 

的VAR(0)是数组我后的值。但是这条线并没有给我任何结果。我在这里?

回答

3

像这样

Sub FindMe() 
    Dim ws As Worksheet 
    Dim rngSearchRange As Range 
    Dim rngFindRange As Range 
    Dim Var 
    Dim elemVar 
    Var = Array("apples", "oranges", "fruit") 
    Set ws = ThisWorkbook.Sheets(1) 
    Set rngSearchRange = ws.Range(ws.[a2], ws.Cells(Rows.Count, "A").End(xlUp)) 
    For Each elemVar In Var 
     Set rngFindRange = rngSearchRange.Find(elemVar, LookIn:=xlValues, lookat:=xlWhole) 
     If Not rngFindRange Is Nothing Then 
      MsgBox elemVar & " found in " & rngFindRange.Address(0, 0) 
     Else 
      MsgBox elemVar & " not found in:" 
     End If 
    Next elemVar 
End Sub 
+0

这似乎是合乎逻辑的。但我仍然没有从rngFindRange得到任何结果。即使我可以将rngSearchRange添加为手表,然后查看Cell.Formula(1)并查看其中的确切值与var(0)中的值完全相同。 –

+0

好的,现在就试试你的代码吧。它发挥作用:)所以,我需要通过我自己的代码来看看为什么这不起作用。编辑。好像它没有找到任何东西,如果字符串中有空格吗? Edit2:也适用。嗯,我会尽快给您回复 –

+0

你在寻找什么值 - 一个实际的公式或公式的结果?如果公式的结果是否检查了值中的空格? – brettdj