2011-10-03 68 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