为文本连接公式内的多个单词着色

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

我的单元格带有串联的单词列表(带有文本连接),我想对单词进行不同的着色以使其更具可读性。 只是一个例子来更好地解释我的问题: 5 个苹果 / 2 个橙子 / 3 个香蕉 / 5 个苹果 / 2 个猕猴桃 / 3 个橙子 我需要把苹果变成红色,把橙子变成橙色。

您对此有解决方案吗? 预先感谢!

我能够在这个论坛上找到一个使用 VBA 和 InStr 函数为单元格中的文本着色的示例,但我遇到的问题是单词经常重复,并且 InStr 不适用于多个条目:

AppleStartPosition = InStr(1, CurrentCellText, "Apple")
If AppleStartPosition > 0 Then
    ActiveSheet.Cells(Row, Col).Characters(AppleStartPosition, 5).Font.color = RGB(255, 0, 0)
End If
excel vba colors textjoin instr
1个回答
0
投票

正如 @Rory 评论的,首先将单元格内容转换为静态值,例如在 excel 或 vba 中使用复制和粘贴特殊/值,然后

这是一个示例代码,其中

cellofrange是要着色的范围

colarr 是要应用的颜色数组

仅对字母着色,并在发现非字母字符时更改颜色。

Sub colorer()
    Dim cellofrange As Range, cellof As Range
    Set cellofrange = Range("a19:a24")
    colarr = Array(rgbSeaGreen, rgbSienna, rgbSlateGrey, rgbSlateBlue, rgbSkyBlue)
    colpointer = 0
    For Each cellof In cellofrange
        changed = False
        stringtocolor = cellof.Value
        For i = 1 To Len(stringtocolor)
            charact = Mid(stringtocolor, i, 1)
            If Asc(charact) > 64 And Asc(charact) < 91 Or Asc(charact) > 96 And Asc(charact) < 123 Then
                cellof.Characters(i, 1).Font.Color = colarr(colpointer)
                changed = False
            ElseIf Not changed Then
                changed = True
                If colpointer = UBound(colarr) Then
                    colpointer = 0
                Else
                    colpointer = colpointer + 1
                End If
            End If
        Next i
    Next cellof
End Sub


© www.soinside.com 2019 - 2024. All rights reserved.