私は、Excel で部分文字列にさまざまな色を設定する VBA コードの機能に依存する、いくつかの興味深い視覚化を構築してきました。文字列を含むセルの場合、構文は次のように機能しますrCell.Characters(start,end).Font.Color=SomeColour
私のアプリケーションは、既存の値に新しい文字列を追加し、新しい文字列の色を設定することで、文字列を作成し、1 つのステップで色の値を設定します。これはうまくいきませんでした。完全な文字列から始めて、複数のサブ文字列に色を付けるとうまくいきます。
2 つの単純なルーチンで違いを示します。
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
2 つのルーチンにより、以下に示す 2 つの異なる結果が得られます。
より多くのサブセグメントを持つ長い文字列の場合、さらに悪化します。エクセル2010を使用しています。
これは私のせいですか、それともバグですか?VBA から文字列を作成して色を付けるより良い方法はありますか?