「excel vba Shapes.AddChart2 グラフ位置」
という検索キーワードに気が付きました。
Excel VBAのShapes.AddChart2メソッドで、
グラフを挿入する位置を指定するには、どうすればいいのかを探していた方による検索です。
ShapesコレクションのAddChart2メソッドでグラフ位置を指定するサンプル
「excel vba Shapes.AddChart2 グラフ位置」
ということですから、グラフ位置に関係するコードがわかる形のシンプルなサンプルをご紹介しておきます。
ポイントでグラフ位置を指定するサンプルマクロ
以下のSubプロシージャを実行すると、アクティブシートに、グラフの存在しないグラフエリアが作成されます。
Dim ws As Worksheet: Set ws = ActiveSheet
ws.Shapes.AddChart2 _
Left:=10, _
Top:=20
End Sub
Shapes.AddChart2メソッドには引数を7個も指定することができ、
これらの中でLeftとTopを使うと位置を指定できます。
ActiveSheetではヒントが表示されませんからオブジェクト変数を活用しましょう
実務で残すブックに残すコードとしては、
ActiveSheet.Shapes.AddChart2 _
Left:=10, _
Top:=20
のほうがイイかもしれませんけれど、
ActiveSheet.Shapes.AddChart2
と書き始めた場合、ヒントが表示されません。
下図のようにヒントを表示させるために、
上記のSubプロシージャではWorksheet型のオブジェクト変数をあえて使っています。
このヒントが表示されれば
「excel vba Shapes.AddChart2 グラフ位置」
と検索することも、なかったかもしれません。
この方法は「ActiveSheet.」でコードを書き始めたときに、ヒントやメンバーが表示されない問題の解決策として広く使え、Shapes.AddChart2メソッドの引数LeftとTopで位置を指定できるといったことよりも、他でも応用できる型を指定したオブジェクト変数に代入する方法を覚えていただきたいと、私は思っています。
セルでグラフ位置を指定するサンプルマクロ
セルとの関係でグラフの位置を指定したいなら、以下のSubプロシージャを参考にしてください。
Dim ws As Worksheet: Set ws = ActiveSheet
ws.Shapes.AddChart2 _
Left:=Range("B2").Left, _
Top:=Range("B2").Top
End Sub
RangeオブジェクトのLeftプロパティ・Topプロパティで取得できる値を、引数に指定しています。
ShapesコレクションのAddChart2メソッドでグラフ挿入後に移動するサンプル
Shapes.AddChart2メソッドは、挿入したグラフを表すShapeオブジェクトを返しますから、挿入後に移動するという方法でも、グラフ位置を指定できます。
Dim ws As Worksheet: Set ws = ActiveSheet
Dim shp As Shape: Set shp = ws.Shapes.AddChart2
shp.Left = Range("C3").Left
shp.Top = Range("C3").Top
End Sub
ShapeオブジェクトのLeftプロパティと、ShapeオブジェクトのTopプロパティを、グラフ挿入後に指定するわけです。
最終更新日時:2022-06-22 21:33
Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » Shapes.AddChart2でグラフ位置を指定する