首页 > 解决方案 > 通过数据验证添加短语时单元格中多个短语的部分文本颜色 [Excel-VBA]

问题描述

我有一个用户生成的标签列表,比如说国家名称,例如:阿根廷、巴西、法国、德国、英国等。我想为这些标签分配颜色,因为它们是从列中的下拉列表中选择的。有些单元格会有多个标签。对于每个独特的标签,我想指定一种独特的颜色。

单元格 A1:法国(蓝色)
单元格 A2:法国(蓝色)、巴西(绿色)

我尝试了几种分配颜色的方法,但最终都为整个单元格设置样式。可行吗?

编辑:我可以做标记部分。标签的独特颜色是个问题。

标签: excelvba

解决方案


因此,正如我评论的那样,您必须浏览单元格的字符并单独为它们着色。这是您的模型示例数据的示例:

在此处输入图像描述

Sub ColorTag()

Dim Tags() As String, Tag As Long, X As Long, Y As Long, ClrIndex As Long, ChrPos As Long
With ThisWorkbook.Sheets("Sheet1")
    For X = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row
        Tags() = Split(.Cells(X, 1), ",")
        For Tag = LBound(Tags) To UBound(Tags)
            If Tags(Tag) = "France" Then
                ClrIndex = 5
            ElseIf Tags(Tag) = "Brazil" Then
                ClrIndex = 4
            End If
            Y = InStr(1, .Cells(X, 1), Tags(Tag))
            For ChrPos = Y To Y + Len(Tags(Tag) - 1)
                .Cells(X, 1).Characters(ChrPos, 1).Font.ColorIndex = ClrIndex
            Next ChrPos
        Next Tag
    Next X
End With

End Sub

结果:

在此处输入图像描述

来自这里的 ColorIndex 代码


推荐阅读