「excel vba addtextbox 文字の色」
という検索キーワードに気が付きました。
Shapesに用意されているAddTextboxメソッドで、
テキストボックスを挿入したときに、文字色を変更するには、どのようなコードを書けばいいのかを探している方による検索キーワードでしょう。
どのOfficeアプリケーションかは不明ですが、
「vba テキストボックス 文字色 addtextbox」
といった検索キーワードでのアクセスもあります。
AddTextbox後に文字色を変更するサンプルマクロ
以下のSubプロシージャを実行すると、アクティブシートにテキストボックスが挿入され、テキストボックスに挿入された文字列「サンプル文字列」が赤色になります。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文で同じ処理を行うコードを書くこともできます。
.AddTextbox(msoTextOrientationHorizontal, 10, 10, 100, 50)
With .TextFrame.Characters
.Text = "サンプル文字列"
.Font.Color = RGB(255, 0, 0)
End With
最終更新日時:2019-08-28 03:47
Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » AddTextboxで文字色を変更する-Characters.Font.Color