Teilstring-Färbung in Excel VBA: Warum funktionieren einige offensichtliche Methoden nicht?

Ich habe einige interessante Visualisierungen erstellt, die auf der Fähigkeit von VBA-Code beruhen, verschiedene Farben für Teilzeichenfolgen in Excel festzulegen. Für eine Zelle, die eine Zeichenfolge enthält, funktioniert die Syntax folgendermaßenrCell.Characters(start,end).Font.Color=SomeColour

Meine Anwendung erstellt die Zeichenfolgen und legt die Farbwerte in einem Schritt fest, indem neue Zeichenfolgen an die vorhandenen Werte angehängt und anschließend die Farbe der neuen Zeichenfolge festgelegt werden. Das hat nicht funktioniert. Beginnen Sie mit einer vollständigen Zeichenfolge und färben Sie dann mehrere Teilzeichenfolgen eintut Arbeit.

Zwei einfache Routinen veranschaulichen den Unterschied:

    Sub TestColourString1()
    'designed to show that substring colour can be done to preexisting string
    Dim rngTestString As Range

    Set rngTestString = Range("colour_string")

    rngTestString.Value = "red green blue"

    rngTestString.Characters(1, 4).Font.Color = RGB(255, 0, 0)
    rngTestString.Characters(5, 10).Font.Color = RGB(0, 255, 0)
    rngTestString.Characters(11, 14).Font.Color = RGB(0, 0, 255)

    End Sub




    Sub TestColourString2()
    'designed to show that setting colour while building string doesn't work
    Dim rngTestString As Range

    Set rngTestString = Range("colour_string")

    rngTestString.Value = "red "
    rngTestString.Characters(1, 4).Font.Color = RGB(255, 0, 0)

    rngTestString.Value = rngTestString.Value & "green "
    rngTestString.Characters(5, 10).Font.Color = RGB(0, 255, 0)

    rngTestString.Value = rngTestString.Value & "blue"
    rngTestString.Characters(11, 14).Font.Color = RGB(0, 0, 255)


    End Sub

Die beiden Routinen führen zu den beiden folgenden unterschiedlichen Ergebnissen:

Für längere Saiten mit mehr Untersegmenten ist es noch schlimmer. Ich benutze Excel 2010.

Also ist das meine Schuld oder ist es ein Fehler? Gibt es eine bessere Möglichkeit, Zeichenfolgen aus VBA zu erstellen und einzufärben?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage