将字符串添加到另一个单元格并保存原始格式的文本颜色

时间:2018-10-29 08:24:09

标签: excel vba excel-vba

我有一个带字符串的主单元格,我需要将另一个单元格的值连接到它。主单元格中的文本用几种颜色上色,当我连接第二个单元格的值时,主单元格的格式恢复为自动(所有颜色均丢失)。 将另一个值连接到字符串时,请协助您保存文本颜色。

这是我的代码:(运行几次)

Sub Adding_Text()
Dim STR As String

LenC = Len(Sheets("T_list").Range("W1")) 'len of main cell
LenTR = Len(Sheets("T_list").Range("W2")) 'len of the value of second cell - which will be added to main cell
STR = Sheets("T_list").Range("W2").Value '

Sheets("T_list").Range("W1").Value = Sheets("T_list").Range("W1").Value & STR & ", "

Sheets("T_list").Range("W1").Characters(Start:=LenC + 1, Length:=LenTR).Font.Color = -16711681 'yellow
Sheets("T_list").Range("W1").Characters(Start:=LenC + 1 + LenTR, Length:=2).Font.Color = -16250872 'black
End Sub

2 个答案:

答案 0 :(得分:2)

使用空白的“帮助程序”单元格来存储原始单元格字符格式。

Sub Adding_Text()
    Dim i As Long

    With Worksheets("T_list")

        .Range("W1").Copy Destination:=.Range("W3")

        .Range("W1") = .Range("W3").Value2 & .Range("W2").Value2

        For i = 1 To Len(.Range("W3").Value2)
            .Range("W1").Characters(Start:=i, Length:=1).Font.Color = _
                .Range("W3").Characters(Start:=i, Length:=1).Font.Color
        Next i

        For i = i To Len(.Range("W2").Value2) + Len(.Range("W3").Value2)
            .Range("W1").Characters(Start:=i, Length:=1).Font.Color = _
                .Range("W2").Characters(Start:=i - Len(.Range("W3").Value2), Length:=1).Font.Color
        Next i

        .Range("W3").Clear

    End With

End Sub

enter image description here

答案 1 :(得分:0)

您可以使用:

取消颜色索引
Sub Test()

    Dim GetFontColor As Variant

    GetFontColor = Sheet1.Range("A1").Font.ColorIndex

End Sub