Kolorowanie podciągów z Excela VBA: dlaczego niektóre oczywiste metody nie działają?

Tworzyłem ciekawe wizualizacje, które opierają się na zdolności kodu VBA do ustawiania różnych kolorów dla podciągów w Excelu. Dla komórki zawierającej łańcuch składnia działa w ten sposóbrCell.Characters(start,end).Font.Color=SomeColour

Moja aplikacja buduje łańcuchy i ustawia wartości kolorów w jednym kroku, dodając nowe ciągi do istniejących wartości, a następnie ustawiając kolor nowego ciągu. To nie zadziałało. Począwszy od pełnego ciągu, a następnie kolorując wiele podciągówrobi praca.

Dwie proste procedury ilustrują różnicę:

    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

Dwie procedury powodują wyświetlenie dwóch różnych wyników poniżej:

W przypadku dłuższych ciągów z większą liczbą podsegmentów jest jeszcze gorzej. Używam programu Excel 2010.

Czy to moja wina, czy jest to błąd? Czy istnieje lepszy sposób tworzenia i kolorowania ciągów znaków z VBA?

questionAnswers(2)

yourAnswerToTheQuestion