6

私は、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 つの異なる結果が得られます。 Excel の 2 つのセルの画像

より多くのサブセグメントを持つ長い文字列の場合、さらに悪化します。エクセル2010を使用しています。

これは私のせいですか、それともバグですか?VBA から文字列を作成して色を付けるより良い方法はありますか?

4

2 に答える 2

7

を割り当てて.Valueも、既存のデータに追加する方法が魔法のようにわかるわけではありません。古いデータを消去し、新しいデータを入れます。

文字が色付けされている場合、最初の文字の色が新しい文字列の色付けに使用されます。

Excelで数式バーを手動で使用した場合と同じように、実際の追加が必要な場合は、次を使用して追加します.Characters

Dim rngTestString As Range

Set rngTestString = Range("colour_string")

Range("colour_string").Characters(Len(Range("colour_string").Value) + 1).Text = "red "
rngTestString.Characters(1, 4).Font.Color = RGB(255, 0, 0)

Range("colour_string").Characters(Len(Range("colour_string").Value) + 1).Text = "green "
rngTestString.Characters(5, 10).Font.Color = RGB(0, 255, 0)

Range("colour_string").Characters(Len(Range("colour_string").Value) + 1).Text = "blue"
rngTestString.Characters(11, 14).Font.Color = RGB(0, 0, 255)
于 2012-07-04T15:12:10.793 に答える
-1

マクロを使用した Excel セルの範囲内のサブストリングの書式設定 (色付けを含む) については、次のビデオを参照してください。

http://youtu.be/O0h6T5Z7HwY

于 2013-06-22T08:38:19.620 に答える