3
我已經找到了解決方案,但代碼太長。然後我決定搜索一種插入我想要查找的所有單詞的方法,並將其突出顯示爲單個查找方法。我遇到了一些使用陣列的想法,並使用這3個代碼編寫我的代碼(this,this和this),但我是VBA的新用戶,因此我的最終代碼有問題,它突出顯示了最後一個字符串陣列。我認爲問題是邏輯,但我不知道VBA的基礎知識,所以我不知道如何糾正它。如何在ActiveSheet中查找並突出顯示所有出現的多個字符串?
我的實際代碼:
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
例如與此代碼我可以找到並選中所有的「奧斯納布呂克」,但它並不突出任何雨果或大衆。
同意,這將解決問題。值得注意的是:它看起來像OP試圖用'Union'來構建一個'Range'並在最後做一個亮點。如果是這樣,問題是使用'Set rng = FoundCell',它爲每個'i'運行。如果它是'Set rng = Union(rng,FoundCell)',這將起作用。問題在於第一個'Union'會失敗,因爲'rng是Nothing'。這可以通過用'如果rng不是那麼:包rng = FoundCell:Else:... union ...:End If'來解決。 –