• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBA:埋め込みグラフオブジェクトの命名方法について)

EXCEL VBA:埋め込みグラフオブジェクトの命名方法について

このQ&Aのポイント
  • EXCEL2000のVBAで、埋め込みグラフオブジェクトの名前をグラフ作成時に命名することは可能でしょうか?
  • 埋め込みグラフオブジェクトのサイズを変更する際、希望のオブジェクトを簡単に選択するために、Charts.Add時にオブジェクトの名前を指定できる方法があるのでしょうか?
  • EXCEL2000のVBAを使用して、複数のグラフを順不同で作成している際、ActiveSheet.Shapes(1)では希望のオブジェクトを選択できない場合があるため、オブジェクトの名前を指定できると便利です。

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

  • ベストアンサー
回答No.2

こんにちは。 以下のような感じで、埋め込みグラフ作成時に位置と、 サイズを決めてしまえば、後からサイズ変更のために 埋め込みグラフの名前を取得する必要は無くなります。 Sub sample() Dim myRange As Range Set myRange = Range("A1:D2") With Worksheets("Sheet1").ChartObjects.Add(50, 50, 300, 200).Chart .ChartType = xlPie .SetSourceData Source:=myRange, PlotBy:=xlRows .ApplyDataLabels Type:=xlDataLabelsShowLabelAndPercent, LegendKey:=False, HasLeaderLines:=True End With End Sub また何らかの理由で、任意の名前を付けておく必要があるのならこんな感じです。 Sub sample1() Dim myRange As Range Set myRange = Range("A1:D2") Worksheets("Sheet1").ChartObjects.Add(50, 50, 300, 200).Name = "グラフの名前" With ActiveSheet.ChartObjects("グラフの名前").Chart .ChartType = xlPie .SetSourceData Source:=myRange, PlotBy:=xlRows .ApplyDataLabels Type:=xlDataLabelsShowLabelAndPercent, LegendKey:=False, HasLeaderLines:=True End With End Sub

pureone
質問者

お礼

なるほど・・・、このような手法があったのですね。 ありがとうございます! 別スレで合わせて教えて頂きたいことがありますので、 お時間が許すようでしたらご回答願えないでしょうか。 http://oshiete1.goo.ne.jp/qa3259420.html

その他の回答 (2)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

コピーするのを1行間違えていたようです Set ch = ActiveChart.Location where:=xlLocationAsObject, Name:="sheet1" です

pureone
質問者

お礼

ありがとうございます。 ただ、やはりコードエラーになってしまいます・・・。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

Locationメソッドの返り値をChart型の変数で受けて このNameプロパティの最後の数字とその前に"Chart "をつけたものが Shapesコレクションに登録されるようです dim ch as Chart dim sh as Shape dim s as variant set ch = ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowLabelAndPercent, _ HasLeaderLines:=True s = split( ch.name," ") set sh = Shapes( "Chart " & s(2)) sh.Name = "myChart1" といった具合でシートに張り付いたチャートの名前を変更できますよ 別のマクロなどでは dim sh as shape set sh = Shape("myChart1") といった具合で取得できます

pureone
質問者

補足

ご回答ありがとうございます。 いただいた回答の意味はある程度理解できたのですが、 実際にご教授頂いた以下の記述ができませんでした。 ↓この部分と set ch = ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowLabelAndPercent, _ HasLeaderLines:=True ↓この部分 set sh = Shapes( "Chart " & s(2)) 色々試してみたのですが・・・、ダメでした。 それから、これは、どの部分にあたるのでしょう?? > Locationメソッドの返り値をChart型の変数で受けて たびたびすみませんが、ご教授よろしくお願い致します。

関連するQ&A