「excel vba "textframe2" 文字色」
という検索キーワードで、このサイト・インストラクターのネタ帳へのアクセスがありました。
テキストボックスなどShape内文字列の、色を変更するExcel VBA(Visual Basic for Applications)のコードを探している方による検索です。
「textframe2」をダブルクォートで括ってらっしゃるということは、
TextFrameオブジェクトからではなく、
TextFrame2オブジェクトから辿るオブジェクトモデルを知りたいということなのでしょう。
TextFrame2オブジェクトを使ってテキストボックスの文字色を変更するサンプルマクロ
以下のマクロを実行すると、アクティブなシート上に存在する1つ目の図形の文字色が赤色になります。
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オブジェクトから辿るオブジェクトモデルを利用する場合は、以下のとおりです。
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
- Newer:CurrentRegionの最終行番号
- Older:Windows10のスナップで横に配置するものを表示しないように
Home » エクセルマクロ・Excel VBAの使い方 » 図形内文字列 » VBAでテキストボックスの文字色を変更する-TextFrame・TextFrame2