如何在ActiveSheet中查找并突出显示所有多个字符串?

时间:2015-06-10 12:09:28

标签: excel vba excel-vba for-loop excel-2010

我已经找到了解决方案,但代码太长了。然后我决定搜索一种插入我想要找到的所有单词并突出显示到一个查找方法中的方法。我发现了使用Arrays这样做的一些想法,并使用这3个代码来编写我的(thisthisthis),但我是VBA的新用户,所以我的最后一个代码有问题,它只突出显示数组的最后一个字符串。我认为问题是逻辑,但我不知道VBA的基础知识,所以我不知道如何纠正它。

我的实际代码:

Sub Sample()
Dim fnd As String
Dim MyAr
Dim i As Long
Dim rng As Range, FoundCell As Range, LastCell As Range, myRange As Range

Set myRange = ActiveSheet.UsedRange
Set LastCell = myRange.Cells(myRange.Cells.Count)

fnd = "hugo/vw/osnabrück"

MyAr = Split(fnd, "/")

    For i = LBound(MyAr) To UBound(MyAr)

        Set FoundCell = myRange.Find(what:=MyAr(i), after:=LastCell)

        If Not FoundCell Is Nothing Then
            FirstFound = FoundCell.Address
        End If
Set rng = FoundCell
            Do Until FoundCell Is Nothing
                Set FoundCell = myRange.FindNext(after:=FoundCell)
                    Set rng = Union(rng, FoundCell)
                If FoundCell.Address = FirstFound Then Exit Do
            Loop
    Next i

If Not rng Is Nothing Then
    rng.EntireRow.Interior.ColorIndex = 3
End If
End Sub

例如,使用此代码,我可以找到并突出显示所有“Osnabrück”,但它不会突出显示任何Hugo或VW。

1 个答案:

答案 0 :(得分:3)

这是因为你只是在代码的最后一次做突出显示,而你的数组中的最后一个选择恰好是osnabruck。

你需要移动

If Not rng Is Nothing Then
    rng.EntireRow.Interior.ColorIndex = 3
End If

之前

next i

所以如果对于数组中的每个元素都会这样做。