私はExcelで部分文字列に異なる色を設定するVBAコードの機能に依存する興味深い視覚化を構築しています。文字列を含むセルの場合、構文は次のようになります。rCell.Characters(start,end).Font.Color=SomeColour
Excel VBAのサブストリングの色付け:なぜ明らかな方法が機能しないのですか?
私のアプリケーションは、既存の値に新しい文字列を追加し、新しい文字列の色を設定することによって文字列を作成し、色の値を設定します。これはうまくいかなかった。完全な文字列で始まり、複数のサブストリングを着色すると、はになります。
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つのルーチンは、以下に示す二つの異なる結果になる:より多くのサブセグメントと長い文字列の場合
それはさらに悪くなります。私はExcel 2010を使用しています。
これは私のせいですかバグですか? VBAから文字列を作成して色分けするには良い方法はありますか?
+ 1ナイスリー完了と –
:)説明それは確かに動作しますが、文字列のCONCATENATE機能に制限を回避するために厄介な方法です。誰がこれが意図的かどうかを知っていますか? –
@matt_black関連する 'Value'プロパティまでは**文字列連結機能**がありません。 'Value = Value&" bar "は、代入の右側だけの連結です。代入の左部分については、 'Value = 'foo bar'と同じです。 'Value'セッターは、新たに供給された値を分析して古い値で始まるかどうかを調べることはしないので、 '追加'する必要があります。あなたが思っていることについては、 'Range'にはない' AppendText'メソッドが必要です。しかし、あなたは上記のコードを使って自分自身を書くことができます。 – GSerg