「vba グラフシートにテキストボックスを追加」
という検索でこのサイト・インストラクターのネタ帳へのアクセスがありました。
VBAを使ってグラフシートにテキストボックスを作成するには、どのようなコードを書けばいいのかを探している方による検索です。
Excel 2007の場合、グラフシートにテキストボックスを追加する操作をマクロ記録しても、コードが一切作られません。
2010以降のExcelの場合、グラフシートにテキストボックスを追加する操作をマクロ記録しようとしても、リボンが使用不可になってしまいます。
このような状況ですから、ShapeやChartのオブジェクト構造が頭に入っていないと、どこから手をつければいいのか戸惑ってしまうことでしょう。
グラフシートにテキストボックスを作成するサンプルマクロ
「vba グラフシートにテキストボックスを追加」
という検索キーワードだけでは、具体的にどうしたかったのかがわかりませんので、参考になりそうなシンプルなマクロをご紹介しておきます。
Dim shp As Shape Set shp = Charts(1).Shapes.AddTextbox( _
Orientation:=msoTextOrientationHorizontal, _
Left:=50, _
Top:=100, _
Width:=200, _
Height:=50)
shp.TextFrame2.TextRange.Text = "サンプル文字列"
End Sub
上記のマクロを実行すると、一番左のグラフシートに、「サンプル文字列」という文字列の表示されたテキストボックスが挿入されます。
サンプルマクロで利用しているオブジェクト式
Chartオブジェクトの、Shapesコレクションオブジェクトの、AddTextboxメソッドを使うと、グラフシートにテキストボックスを作成することができます。
Set shp = Charts(1).Shapes.AddTextbox( _
Shapes.AddTextboxメソッドの引数は、名前を見れば、何を指定しているものなのかは、わかるでしょう。
Orientation:=msoTextOrientationHorizontal, _
Left:=50, _
Top:=100, _
Width:=200, _
Height:=50)
テキストボックスを作成してから、ShapeオブジェクトのTextFrame2オブジェクトの、TextRange2オブジェクトのTextプロパティを使って、
shp.TextFrame2.TextRange.Text = "サンプル文字列"
表示する文字列を指定しています。
Shapeのオブジェクトモデルとオブジェクト式が理解できてないと、
shp.TextFrame2.TextRange...
というオブジェクト式を見て、TextFrame2オブジェクトのTextRangeオブジェクトではないのかと思ってしまうかもしれませんが、TextFrame2オブジェクトのTextRangeプロパティが返すのは、オブジェクトブラウザー等で確認すればわかるとおり、
TextRange2オブジェクトです。プロパティ名と返されるオブジェクト名が微妙に異なっているため、注意が必要なオブジェクト式です。
最終更新日時:2018-09-20 06:56
Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » VBAでグラフシートにテキストボックスを作成する