Coloración de subcadenas de Excel VBA: ¿por qué algunos métodos obvios no funcionan?

He estado creando algunas visualizaciones interesantes que se basan en la capacidad del código VBA para establecer diferentes colores para las subcadenas en Excel. Para una celda que contiene una cadena, la sintaxis funciona así.rCell.Characters(start,end).Font.Color=SomeColour

Mi aplicación crea las cadenas y establece los valores de color en un solo paso agregando nuevas cadenas a los valores existentes y luego configurando el color de la nueva cadena. Esto no funcionó. Comenzando con una cadena completa y luego coloreando múltiples sub-cadenashace trabajo.

Dos rutinas simples ilustran la diferencia:

    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

Las dos rutinas dan como resultado los dos resultados diferentes que se muestran a continuación:

Para cuerdas más largas con más subsegmentos es aún peor. Estoy usando Excel 2010.

Entonces, ¿es esto mi culpa o es un error? ¿Hay una mejor manera de crear y colorear cadenas desde VBA?

Respuestas a la pregunta(2)

Su respuesta a la pregunta