首页 > 解决方案 > 根据另一个单元格中的值更改单元格中的字体颜色

问题描述

我想根据另一个单元格中的值更改单元格中某些文本的颜色。我曾尝试使用条件格式,但它不起作用,因为我只想更改单元格中特定单词的颜色。我也搜索了一些 VBA 代码,但仍然找不到合适的代码。是否有任何 VBA 代码可以启用此功能?

如下例所示(见图),我只想突出显示 B 列和 C 列中与 G 列中的日期匹配的日期。日期应该保持不变。

作为信息,B 列和 C 列中的值被格式化为文本,G 中的值被格式化为日期。

在此处输入图像描述

这基本上是我所希望的。

在此处输入图像描述

标签: excelvba

解决方案


我已根据您在评论中的要求适当地修改了代码。

Sub Change_Text_Color()

Dim Find_Text, Cell, Cell_in_Col_G, LastCell_inColG As Range
Dim StartChar, CharLen, LastUsedRow_inRange, LastUsedRow_inColB, _
LastUsedRow_inColC As Integer

LastUsedRow_inColB = Sheet1.Cells(Rows.count, "B").End(xlUp).Row
LastUsedRow_inColC = Sheet1.Cells(Rows.count, "C").End(xlUp).Row
LastUsedRow_inRange = Application.WorksheetFunction. _
Max(LastUsedRow_inColB, LastUsedRow_inColC)

Set LastCell_inColG = Sheet1.Cells(Rows.count, "G").End(xlUp)

    For Each Cell In Range(Sheet1.Cells(2, 2), Cells(LastUsedRow_inRange, 3))
        
        For Each Cell_in_Col_G In Range(Sheet1.Cells(2, 7), LastCell_inColG)
            
            CharLen = Len(Cell_in_Col_G.Text)  
            Set Find_Text = Cell.Find(what:=Cell_in_Col_G.Text)
        
            If Not Find_Text Is Nothing Then
                StartChar = InStr(Cell.Value, Cell_in_Col_G.Text)        
                With Cell.Characters(StartChar, CharLen)
                    .Font.Color = RGB(0, 255, 0)
                End With                
            End If
        Next
    Next
End Sub

请让我知道您对此的反馈。


推荐阅读