VBA查找范围内的特定文本并更改字体颜色

问题描述 投票:0回答:1

我希望有人可以帮助我使用 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
excel vba text colors fonts
1个回答
0
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.