我希望有人可以帮助我使用 VBA 代码来搜索单元格区域中的特定文本并将字体颜色更改为红色。 例如,我正在寻找单词“cat”,但我不希望包含相同字母的任何其他单词发生变化,例如“concatenate”或“category”甚至“cats”。
我使用了以下内容,但它也选取了包含相同字母的其他单词
Public Sub ChangefontColor()
Set TextRange = Range("K2:K4584")
partOfText = "CAT"
fontColor = 3
For Each part In TextRange
lenOfPart = Len(part)
lenPartOfText = Len(partOfText)
For i = 1 To lenOfPart
tempStr = Mid(part, i, lenPartOfText)
If tempStr = partOfText Then
part.Characters(Start:=i, Length:=lenPartOfText).Font.ColorIndex = fontColor
End If
Next i
Next part
End Sub
Option Explicit
Public Sub ChangefontColor()
Dim TextRange As Range, lenPartOfText As Long, lenOfPart As Long
Dim tempStr As String, partOfText As String
Dim postStr As String, preStr As String, part, i As Long
Const FONT_COLOR = 3
Set TextRange = Range("K2:K4584")
TextRange.Font.Color = vbBlack
partOfText = "CAT"
lenPartOfText = Len(partOfText)
For Each part In TextRange
lenOfPart = Len(part)
For i = 1 To lenOfPart - lenPartOfText + 1
tempStr = Mid(part, i, lenPartOfText)
If i < lenOfPart - lenPartOfText + 1 Then
postStr = LCase(Mid(part, i + lenPartOfText, 1))
Else
postStr = ""
End If
If i = 1 Then
preStr = ""
Else
preStr = LCase(Mid(part, i - 1, 1))
End If
If tempStr = partOfText Then
If (Len(postStr) = 0 Or postStr < "a" Or postStr > "z") And _
(Len(preStr) = 0 Or preStr < "a" Or preStr > "z") Then
part.Characters(Start:=i, Length:=lenPartOfText).Font.ColorIndex = FONT_COLOR
End If
End If
Next
Next
End Sub