Home » エクセルマクロ・Excel VBAの使い方 » 図形内文字列 » AddTextbox後に文字色を変更する-TextRange2.Font.Fill.ForeColor

AddTextbox後に文字色を変更する-TextRange2.Font.Fill.ForeColor

動作検証バージョン:Windows版Excel(バージョン1907 ビルド11901.20218)

「excel vba addtextbox 文字の色」
という検索キーワードをきっかけにして、TextFrame-Characters-Font-Colorというオブジェクトモデルを使って、テキストボックスの文字色を変更するマクロをご紹介しました。

Office 2007で導入されたTextFrame2系のオブジェクトモデルを使ったコードでも、もちろん同様の処理が可能です。

[スポンサードリンク]

AddTextbox後に文字色を変更するサンプルマクロ

以下のSubプロシージャを実行すると、アクティブシートにテキストボックスが挿入され、テキストボックスに挿入された文字列「サンプル文字列」が赤色になります。

Sub AddTextboxして文字色を設定する()
 Dim ws As Worksheet
 Set ws = ActiveSheet

 Dim shp As Shape
 Set shp = ws.Shapes _
   .AddTextbox(msoTextOrientationHorizontal, 10, 10, 100, 50)

 Dim trng2 As TextRange2
 Set trng2 = shp.TextFrame2.TextRange
 trng2.Text = "サンプル文字列"
 trng2.Font.Fill.ForeColor.RGB = RGB(255, 0, 0)
End Sub

サンプルマクロで行っている処理

挿入したテキストボックスに、文字列を入力して、
  trng2.Text = "サンプル文字列"
文字色を設定する部分が、
  trng2.Font.Fill.ForeColor.RGB = RGB(255, 0, 0)
TextFrame2系のオブジェクトモデルを利用しています。

文字列を入力している、
  trng2.Text = "サンプル文字列"
は、TextRange2オブジェクトのTextプロパティを利用しています。

文字色を設定する
  trng2.Font.Fill.ForeColor.RGB = RGB(255, 0, 0)
は、以下のような階層をたどっています。
  TextRange2オブジェクト(TextFrame2.TextRangeの戻り値)
   └ Font2 オブジェクト(TextRange2.Fontの戻り値)
      └ FillFormatオブジェクト(Font2.Fillの戻り値)
         └ ColorFormatオブジェクト(FillFormat.Colorの戻り値)
            └ RGBプロパティ

コードとして見えているプロパティの名前と、プロパティが返すオブジェクトの名前とが一致していないので、難易度は高くなっています。

マクロ記録でできるコード

実は最近のバージョンのExcelでマクロ記録した場合、これらのプロパティを使ったコードが作られます。

テキストボックス内の「サンプル文字列」という文字列を選択しておいて、赤色に変更すると以下のようなコードが作られます。

 With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 7).Font.Fill
  .Visible = msoTrue
  .ForeColor.RGB = RGB(255, 0, 0)
  .Transparency = 0
  .Solid
 End With

先述のSubプロシージャと同じプロパティが使われているのを確認できます。

最終更新日時:2019-08-28 03:44

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 図形内文字列 » AddTextbox後に文字色を変更する-TextRange2.Font.Fill.ForeColor

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

検索


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

.