Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » VBAでグラフシートにテキストボックスを作成する

VBAでグラフシートにテキストボックスを作成する

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「vba グラフシートにテキストボックスを追加」
という検索でこのサイト・インストラクターのネタ帳へのアクセスがありました。

VBAを使ってグラフシートにテキストボックスを作成するには、どのようなコードを書けばいいのかを探している方による検索です。

Excel 2007の場合、グラフシートにテキストボックスを追加する操作をマクロ記録しても、コードが一切作られません。
2010以降のExcelの場合、グラフシートにテキストボックスを追加する操作をマクロ記録しようとしても、リボンが使用不可になってしまいます。

このような状況ですから、ShapeやChartのオブジェクト構造が頭に入っていないと、どこから手をつければいいのか戸惑ってしまうことでしょう。

[スポンサードリンク]

グラフシートにテキストボックスを作成するサンプルマクロ

「vba グラフシートにテキストボックスを追加」
という検索キーワードだけでは、具体的にどうしたかったのかがわかりませんので、参考になりそうなシンプルなマクロをご紹介しておきます。

Sub グラフシートにテキストボックスを作成する()
 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プロパティが返すのは、オブジェクトブラウザー等で確認すればわかるとおり、

グラフシートにテキストボックスを作成するExcelマクロ

TextRange2オブジェクトです。プロパティ名と返されるオブジェクト名が微妙に異なっているため、注意が必要なオブジェクト式です。

最終更新日時:2018-09-20 06:56

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » VBAでグラフシートにテキストボックスを作成する

「グラフ・Chart」の記事一覧

検索


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

.