Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » AddTextboxで文字色を変更する-Characters.Font.Color

AddTextboxで文字色を変更する-Characters.Font.Color

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

「excel vba addtextbox 文字の色」
という検索キーワードに気が付きました。

Shapesに用意されているAddTextboxメソッドで、

テキストボックスを挿入したときに、文字色を変更するには、どのようなコードを書けばいいのかを探している方による検索キーワードでしょう。

どのOfficeアプリケーションかは不明ですが、
「vba テキストボックス 文字色 addtextbox」
といった検索キーワードでのアクセスもあります。

[スポンサードリンク]

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 chars As Characters
 Set chars = shp.TextFrame.Characters
 chars.Text = "サンプル文字列"
 chars.Font.Color = RGB(255, 0, 0)
End Sub

AddTextboxメソッドに限らず、Shapesコレクションに用意されているAdd〇〇メソッドは、挿入された図形を表すShapeオブジェクトを返します。Shapes.Add〇〇メソッドで細かな設定を行いたい場合、戻り値をオブジェクト変数に格納して、おいてから設定するのが、定番の処理方法です。

ステップ実行しましょう

拙著『いちばんやさしいExcel VBAの教本』でも繰り返し利用している、ステップ実行をすれば、テキストボックが挿入され、
  Set shp = ws.Shapes _
    .AddTextbox(msoTextOrientationHorizontal, 10, 10, 100, 50)

文字列「サンプル文字列」が入力されて、
  Set chars = shp.TextFrame.Characters
  chars.Text = "サンプル文字列"

入力された文字の色が赤色に設定される様子を、確認できます。
  chars.Font.Color = RGB(255, 0, 0)

ローカルウィンドウでオブジェクト変数の中身を確認しましょう

やはり拙著で何度も使っているローカルウィンドウで、オブジェクト変数の中身を確認しましょう。
  Set shp = ws.Shapes _
    .AddTextbox(msoTextOrientationHorizontal, 10, 10, 100, 50)
が実行されるとオブジェクト変数shpにShapes.AddTextboxの戻り値が格納されること、更に、
  Set chars = shp.TextFrame.Characters
が実行されるとオブジェクト変数charsにTextFrame.Charactersメソッドの戻り値が格納される様子を、ご自分の目で見て、戻り値がオブジェクト変数に格納される様子をイメージしてください。

特に変数charsは、初期状態では当然空白だったTextが、

文字列を設定する代入文、
  chars.Text = "サンプル文字列"
が実行されれば「サンプル文字列」が表示され、

つづいて文字色を設定する、
  chars.Font.Color = RGB(255, 0, 0)
が実行されればFont.Colorに「255」が表示されることを確認しましょう。

オブジェクト変数を使わずWith文でも書けます

まずは、オブジェクト変数を使った上述のSubプロシージャで挙動を確認することを強くおすすめしますが、以下のようにオブジェクト変数を使わずWith文で同じ処理を行うコードを書くこともできます。

 With ActiveSheet.Shapes _
  .AddTextbox(msoTextOrientationHorizontal, 10, 10, 100, 50)

  With .TextFrame.Characters
   .Text = "サンプル文字列"
   .Font.Color = RGB(255, 0, 0)
  End With

 End With

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

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » AddTextboxで文字色を変更する-Characters.Font.Color

「Shapesコレクション・Shapeオブジェクト」の記事一覧

検索


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

.