Home » エクセルマクロ・Excel VBAの使い方 » 図形内文字列 » VBAでテキストボックスの文字色を変更する-TextFrame・TextFrame2

VBAでテキストボックスの文字色を変更する-TextFrame・TextFrame2

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「excel vba "textframe2" 文字色」
という検索キーワードで、このサイト・インストラクターのネタ帳へのアクセスがありました。

テキストボックスなどShape内文字列の、色を変更するExcel VBA(Visual Basic for Applications)のコードを探している方による検索です。

「textframe2」をダブルクォートで括ってらっしゃるということは、
TextFrameオブジェクトからではなく、
TextFrame2オブジェクトから辿るオブジェクトモデルを知りたいということなのでしょう。

TextFrame2オブジェクトを使ってテキストボックスの文字色を変更するサンプルマクロ

以下のマクロを実行すると、アクティブなシート上に存在する1つ目の図形の文字色が赤色になります。

Sub Shape内文字列の色変更_TextFrame2()
  ActiveSheet.Shapes(1) _
    .TextFrame2.TextRange.Font.Fill.ForeColor.RGB _
    = RGB(255, 0, 0)
End Sub

上記のマクロで利用しているオブジェクトモデルの、TextFrame2オブジェクト下の階層関係は、以下のとおりです。

  TextFrame2オブジェクト ← Shape.TextFrame2プロパティ
   └ TextRange2オブジェクト ← TextFrame2.TextRangeプロパティ 
     └ Font2オブジェクト ← TextRange2.Fontプロパティ
       └ FillFormatオブジェクト ← Font2.Fillプロパティ
         └ ColorFormatオブジェクト ← FillFormat.ForeColorプロパティ
           └ RGBプロパティ

取得するオブジェクト名と、コードに書かれているプロパティ名が異なっているものがたくさん並んでいるので、オブジェクトブラウザーを使って各プロパティが何を返すのかをしっかり確認して、自分でも階層関係図を手書きするなどして丹念に階層関係を追わない限り、理解は難しいのではないかと思いますが、頑張ってください!

TextFrameオブジェクトを使ってテキストボックスの文字色を変更するサンプルマクロ

ちなみに、同じことをTextFrameオブジェクトから辿るオブジェクトモデルを利用する場合は、以下のとおりです。

Sub Shape内文字列の色変更_TextFrame()
 ActiveSheet.Shapes(1) _
   .TextFrame.Characters.Font.Color _
   = RGB(255, 0, 0)
End Sub

上記のマクロで利用している、TextFrameオブジェクト下の階層関係は以下のとおりです。

  TextFrameオブジェクト ← Shape.TextFrameプロパティ
    └ Charactersオブジェクト ← TextFrame.Charactersメソッド
     └ Fontオブジェクト ← Characters.Fontプロパティ
       └ Colorプロパティ

先のTextFrame2オブジェクトからの階層関係より、ずいぶんスッキリしています。

TextFrame2オブジェクトから辿るオブジェクトモデルのほうが、できることは多いのですが、その分、階層関係が複雑になっているのは、やむを得ないことです。
頑張ってください!

最終更新日時:2022-08-04 15:43

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 図形内文字列 » VBAでテキストボックスの文字色を変更する-TextFrame・TextFrame2

「図形内文字列」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.