2014-12-01 120 views
0

我試圖在第一列中的單元格中搜索「/」。我需要瀏覽13個工作表,找到包含「/」(可能還包含其他文本)的單元格,並突出顯示該行。我一直在測試我在網上找到的代碼,在完成整個工作簿時沒有太多的運氣。在列中搜索文本並突出顯示該行

昏暗的價值作爲字符串

value = "/" 

x = 1 

For x = 1 To 13 Step -1 
lastrow = Cells(Rows.Count, "A").End(xlUp).Row 
    For y = 1 To lastrow 
    Range("a" & i).Find (value) 
    Range("a" & i).Rows.Interior.Color = RGB(256, 1, 1) 

    Next y 
Next x 

這是我使用的代碼。如果任何人都可以提供一些幫助,我將不勝感激。

+1

這可以根據公式條件格式來完成;例如'= ISNUMBER(FIND(「/」,$ A1))' – Jeeped 2014-12-01 20:57:46

回答

0

這無關你的問題,但我注意到的第一件事是:

For x = 1 To 13 Step -1 

這不會工作;如果值的順序是遞減的,則負面步驟將僅起作用。

您錯過了對工作表的任何選擇。如果您要遍歷工作簿中的所有工作表,則最簡單的方法是使用For each wks in Worksheets

Find在Excel中VBA有點複雜。對Find的調用返回包含指定文本的範圍中的第一個單元格。然後您需要對FindNext進行後續調用以獲取其他匹配單元。但是,FindNext將永遠運行 - 您需要保存對第一個匹配單元格的引用,然後比較從FindNext獲得的結果,直到第一個匹配單元格再次出現。

這是我會怎麼做:

Sub foo() 
    Dim value As String: value = "/" 
    Dim rSearch As Range 
    Dim firstFound As Range 
    Dim nextFound As Range 
    Dim wks As Worksheet 

    For Each wks In Worksheets 
     wks.Activate 

     Set rSearch = Range("a1", Cells(Rows.Count, "a").End(xlUp)) 
     Set firstFound = rSearch.Find(value) 
     If Not firstFound Is Nothing Then 
      Set nextFound = firstFound 
      Do 
       nextFound.EntireRow.Interior.Color = RGB(256, 1, 1) 
       Set nextFound = rSearch.FindNext(nextFound) 
      Loop While nextFound.Address <> firstFound.Address 
     End If 
    Next 
End Sub 
+0

感謝您的幫助。我想如果我使用for語句,它會讓我通過工作表。這工作完美。再次感謝! – Garrett 2014-12-09 19:07:59

相關問題