「excel vba グラフ テキストボックス」
「エクセルマクロ グラフにテキストボックス」
といった検索キーワードで、このサイト・インストラクターのネタ帳へのアクセスが時折あります。
グラフにテキストボックスを追加する、Excel VBA(Visual Basic for Applications)のコードを探していた方による検索でしょうか。
グラフシートにテキストボックスを作成するマクロを既にご紹介していますので、この記事ではグラフオブジェクトにテキストボックスを作成するマクロを2つご紹介しておきます。
アクティブなグラフオブジェクトにテキストボックスを作成するサンプルマクロ
グラフを選択しておいて、以下のSubプロシージャを実行すると、アクティブなグラフオブジェクト内に「サンプル文字列」と表示されたテキストボックスが作成されます。
Dim shp As Shape Set shp = ActiveChart.Shapes.AddTextbox( _
Orientation:=msoTextOrientationHorizontal, _
Left:=0, _
Top:=0, _
Width:=100, _
Height:=50)
shp.TextFrame2.TextRange.Text = "サンプル文字列"
End Sub
テキストボックスを作成する、ShapesコレクションオブジェクトのAddTextBoxメソッドを利用するオブジェクト式は、既にご紹介しているグラフシートにテキストボックスを追加する場合と同じです。
Shapesコレクションオブジェクトを取得する、上位のオブジェクトを取得するオブジェクト式がActiveChartプロパティになっている部分だけが異なります。
アクティブなワークシート上のグラフオブジェクトにテキストボックスを追加するサンプルマクロ
以下のようなSubプロシージャで、アクティブなワークシート上のすべてのグラフオブジェクトに、テキストボックスを追加できます。
Dim cho As ChartObject
Dim shp As Shape For Each cho In ActiveSheet.ChartObjects
Set shp = cho.Chart.Shapes.AddTextbox( _
Orientation:=msoTextOrientationHorizontal, _
Left:=0, _
Top:=0, _
Width:=100, _
Height:=50)
shp.TextFrame2.TextRange.Text = "サンプル文字列"
Next cht
End Sub
アクティブなシート上のすべてのグラフオブジェクトに対してFor Each~Nextループを回して、
For Each cho In ActiveSheet.ChartObjects
ChartObjectオブジェクトのChartオブジェクト内のShapesコレクションオブジェクトのAddTextboxメソッドを利用しています。
Set shp = cho.Chart.Shapes.AddTextbox( _
ChartObjectオブジェクトの中にChartオブジェクトが存在するという部分がポイントでしょう。
Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » VBAでグラフオブジェクトにテキストボックスを追加する