Substring coloração do Excel VBA: por que alguns métodos óbvios não funcionam?

Eu tenho construído algumas visualizações interessantes que dependem da capacidade do código VBA para definir cores diferentes para substrings no Excel. Para uma célula que contém uma string, a sintaxe funciona assimrCell.Characters(start,end).Font.Color=SomeColour

Meu aplicativo cria as strings e define os valores de cor em uma etapa, acrescentando novas strings aos valores existentes e, em seguida, definindo a cor da nova string. Isso não funcionou. Começando com uma string completa e depois colorindo várias sub-stringsfaz trabalhos.

Duas rotinas simples ilustram a diferença:

    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

As duas rotinas resultam nos dois resultados diferentes mostrados abaixo:

Para strings mais longas com mais subsegmentos, é ainda pior. Estou usando o Excel 2010.

Então, isso é minha culpa ou é um erro? Existe uma maneira melhor de criar e colorir seqüências de caracteres do VBA?

questionAnswers(2)

yourAnswerToTheQuestion