Окрашивание подстроки из Excel VBA: почему некоторые очевидные методы не работают?

Я создавал несколько интересных визуализаций, которые основаны на способности кода VBA устанавливать различные цвета для подстрок в Excel. Для ячейки, содержащей строку, синтаксис работает следующим образомrCell.Characters(start,end).Font.Color=SomeColour

Мое приложение строит строки и устанавливает значения цвета за один шаг, добавляя новые строки к существующим значениям, а затем устанавливая цвет новой строки. Это не сработало. Начиная с полной строки, а затем раскрашивая несколько подстрокdoes Работа.

Две простые процедуры иллюстрируют разницу:

    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

Эти две процедуры приводят к двум различным результатам, показанным ниже: the image in two cells from excel

Для более длинных строк с большим количеством подсегментов это еще хуже. Я использую Excel 2010.

Так это моя вина или это ошибка? Есть ли лучший способ создавать и окрашивать строки из VBA?

Ответы на вопрос(2)

Ваш ответ на вопрос