「excel activesheet.shapes chartの名前を取得」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
アクティブなワークシート上のShapeの中から、グラフの名前だけを取得するには、どのようなコード書けばいいのかを探していた方による検索です。
For Each~Nextループでアクティブシート上のグラフの名前を取得する
以下のSubプロシージャを実行すると、アクティブシート上のグラフの名前がイミディエイトウィンドウに出力されます。
Dim shp As Shape For Each shp In ActiveSheet.Shapes
If shp.HasChart Then
Debug.Print shp.Name
End If
Next shp
End Sub
アクティブシート上のすべてのShapeに対してFor Each~Nextループを回して、
For Each shp In ActiveSheet.Shapes
Shapeがグラフを持っていたときに、
If shp.HasChart Then
名前を出力しています。
Debug.Print shp.Name
ローカルウィンドウでオブジェクト変数の中身を確認しましょう
「excel activesheet.shapes chartの名前を取得」
を検索なさった方への直接的な回答は上記のとおりですが、ステップ実行してローカルウィンドウで、オブジェクト変数・shpの中身を確認しておきましょう。
オブジェクト変数ですから、普通の変数よりもたくさんの情報にアクセスできるため、ローカルウィンドウを見慣れない方は戸惑ってしまうかもしれませんが、まずは上記のプロシージャで利用しているShape.HasChartプロパティを確認しましょう。
オブジェクト変数・shpに、グラフがセットされているときは、下図のようにHasChartプロパティがmsoTrueに、
グラフではないShapeがセットされているときには下図のようにmsoFalseになっていることが確認できます。
またNameプロパティには、上記のプロシージャでイミディエイトウィンドウに出力した、Shapeの名前が表示されていることも確認しましょう。
あとは、
AutoShapeTypeプロパティ
Typeプロパティ
あたりを確認しておくのがおすすめです。
Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » ActiveSheet.Shapesからグラフの名前を取得する