• ベストアンサー

EXCEL VBA グラフの名前

EXCEL上でデータを入力して、そのデータを基に手動でグラフを作成して、その過程をマクロに記録します。 出来上がったマクロに対して、MsgBox(ActiveChart.Name)という文を挿入して実行すると、 「グラフ グラフ 3」と表示されます。 一方、手動で作成したグラフを選択して、大きさを変え、それをマクロに記録して中身を見ると、 ActiveSheet.Shapes("グラフ 3").ScaleWidth 1.12, msoFalse, msoScaleFromTopLeft のように表示されます。 グラフの名前としては後者が正しいと思うのですが、 どうして前者のような表示が出てしまうのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >グラフの名前としては後者が正しいと思うのですが、 >どうして前者のような表示が出てしまうのでしょうか? どちらが正しいとかいうことはありませんが、 >MsgBox(ActiveChart.Name)という文を挿入して実行すると、 >「グラフ グラフ 3」と表示されます。 の最初の「グラフ」という名称は、シート名だと思います。 グラフに関しては、記録マクロでは、なかなか正確にはグラフ自体を取得できないのが実際のところです。Shapes は、オブジェクトとは言っても複合的な要素をすべて含んでいますので、グラフから、フォームツールから、オートシェイプまで、すべてひっくるめてしまいます。 以下でも分かるように、グラフは、別な名前がいくつもあります。そのオブジェクトを取得する時の経由によって、名前が変わるものだと思います。 これらの、シートに属したグラフのことを「埋め込みグラフ」といいますが、 実際のVBAのコードでは、埋め込みグラフは、ChartObjects を使用します。それで、グラフ内の正確な場所を取得することができます。 '[シート名は任意] ActiveSheet.ChartObjects("グラフ 3").Chart ActiveSheet.ChartObjects("Chart 3").Chart ActiveSheet.ChartObjects(1).Chart 'インデックス などと書き表されます。あまり、Shapes("グラフ 3")というような書き表し方はしません。 例: With ActiveSheet.ChartObjects("グラフ 1").Chart.Axes(xlValue)   With .TickLabels.Font    .Name = "MS 明朝"   End With End With 注:ExcelのグラフのVBAは、Version によって少なからず異なりますので、注意が必要です。上記は、Excel 2003 で確認されたものです。

murano47
質問者

お礼

いつもありがとうございます。

その他の回答 (1)

  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.1

EXCELのバージョンにより表示が異なるようでうちでは前者が "Sheet1 グラフ 3"の形で表示されます。 で、ご質問は何でしょう?大きさや位置を変える場合、グラフを操作している積もりでもShapeというシート上の表示オブジェクトのいずれかを指すもので扱っているので、記録はそうなりますが、そのことではないのですか?

murano47
質問者

お礼

ご回答ありがとうございます。 マクロでグラフを作成表示させた後、座標軸の書式を変えようと思っているのですが、 グラフの指定をどうしたらいいのかなと思っているのです。

関連するQ&A