我正在尝试在第一列的单元格中搜索“/”。我需要浏览13个工作表,找到包含“/”(也可能包含其他文本)的单元格,然后突出显示该行。我一直在测试我在网上找到的代码,并且没有太多运气来完成整个工作簿。
Dim value As String
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
这是我正在使用的代码。如果有人能提供一些帮助我会非常感激。
答案 0 :(得分:0)
这与你的问题无关,但我注意到的第一件事就是:
For x = 1 To 13 Step -1
这永远不会奏效;只有当值的顺序降序时,否定步骤才会起作用。
您遗漏了任何选择的工作表。如果您正在遍历工作簿中的所有工作表,那么最简单的方法是使用For each wks in Worksheets
。
Find
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