「excel vba addtextbox 文字の色」
という検索キーワードをきっかけにして、TextFrame-Characters-Font-Colorというオブジェクトモデルを使って、テキストボックスの文字色を変更するマクロをご紹介しました。
Office 2007で導入されたTextFrame2系のオブジェクトモデルを使ったコードでも、もちろん同様の処理が可能です。
AddTextbox後に文字色を変更するサンプルマクロ
以下のSubプロシージャを実行すると、アクティブシートにテキストボックスが挿入され、テキストボックスに挿入された文字列「サンプル文字列」が赤色になります。
Dim ws As Worksheet
Set ws = ActiveSheet
Dim shp As Shape
Set shp = ws.Shapes _
.AddTextbox(msoTextOrientationHorizontal, 10, 10, 100, 50)
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