Excel 使用VBA附加值时在一个单元格中使用多种颜色

Excel 使用VBA附加值时在一个单元格中使用多种颜色,excel,vba,Excel,Vba,我使用以下代码通过检查其他单元格的值在单个单元格中追加值。接下来我要做的是更改要添加的值的字体颜色,并保留任何现有的字体颜色。例:a1的值为“”。然后,我将值“abc”附加为绿色。然后,我将值“123”附加为红色。我想让手机显示: [(红色)(绿色)] [“abc 123”] 我的代码: If Cells(ActiveCell.Row, 6).Value = "Control" Then bit_value = "(" & Application.WorksheetFuncti

我使用以下代码通过检查其他单元格的值在单个单元格中追加值。接下来我要做的是更改要添加的值的字体颜色,并保留任何现有的字体颜色。例:a1的值为“”。然后,我将值“abc”附加为绿色。然后,我将值“123”附加为红色。我想让手机显示:

[(红色)(绿色)]

[“abc 123”]

我的代码:

If Cells(ActiveCell.Row, 6).Value = "Control" Then
     bit_value = "(" & Application.WorksheetFunction.VLookup(Cells(ActiveCell.Row, 5).Value, Range("Output"), total_bits + 3, False) & ")" & high_low & "  "
     Cells(ActiveCell.Row, 7).Value = Cells(ActiveCell.Row, 7).Value & bit_value
End If
我的数据:

504003  Control     2   11  55  12  21  00010001    01010101    00010010    00100001
504003  Control     2   11  55  12  20  00010001    01010101    00010010    00100000
更新: 通过使用Tim的代码,我得到了下面的更改,它正是我所需要的

bitColor = IIf(ActiveCell.Value = 0, RGB(255, 0, 0), RGB(0, 0, 255))
If Cells(ActiveCell.Row, 6).Value = "Control" Then
     With Cells(ActiveCell.Row, 7)
          bit_value = "(" & Application.WorksheetFunction.VLookup(Cells(Active _
               Cell.Row, 5).Value,Range("Output"), total_bits + 3, False) & ")"
          AddValue Cells(ActiveCell.Row, 7), bit_value, bitColor
     End With
End If

下面介绍如何在不丢失任何现有格式的情况下向单元格添加文本:

Sub Tester()
    With ActiveSheet
        AddValue .Range("A1"), "Hello", vbRed
        AddValue .Range("A1"), "Hello", vbGreen
        AddValue .Range("A1"), "Hello", vbBlue
    End With
End Sub


Sub AddValue(rngVal As Range, val, theColor As Long)
    Const SEP As String = " "
    Dim firstChar As Long, extra As Long

    firstChar = 1 + Len(rngVal.Value)
    extra = IIf(firstChar = 1, 0, 1)

    With rngVal
        .Characters(firstChar).Text = IIf(Len(rngVal.Value) > 0, SEP, "") & val
        .Characters(firstChar + extra, Len(val)).Font.Color = theColor
    End With
End Sub

注意:使用此方法最多只能获得255个字符

需要更多帮助,并且无法在注释中获得正确的格式。我应该更新问题吗?是的-更新问题比在注释中添加代码要好得多:太难了,无法在那里阅读。直接调用Sub非常有效。即使有大量数据,我也看不到性能有任何重大损失。非常感谢!您没有正确使用
Characters
属性-这里需要指定要使用的字符范围(至少应该提供起始位置)。直接从您的代码调用my Sub可能更容易,例如,
AddValue单元格(ActiveCell.Row,7),[your lookup value here],bitColor