- ベストアンサー
EXCEL VBA:埋め込みグラフオブジェクトの命名方法について
- EXCEL2000のVBAで、埋め込みグラフオブジェクトの名前をグラフ作成時に命名することは可能でしょうか?
- 埋め込みグラフオブジェクトのサイズを変更する際、希望のオブジェクトを簡単に選択するために、Charts.Add時にオブジェクトの名前を指定できる方法があるのでしょうか?
- EXCEL2000のVBAを使用して、複数のグラフを順不同で作成している際、ActiveSheet.Shapes(1)では希望のオブジェクトを選択できない場合があるため、オブジェクトの名前を指定できると便利です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 以下のような感じで、埋め込みグラフ作成時に位置と、 サイズを決めてしまえば、後からサイズ変更のために 埋め込みグラフの名前を取得する必要は無くなります。 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
その他の回答 (2)
- redfox63
- ベストアンサー率71% (1325/1856)
コピーするのを1行間違えていたようです Set ch = ActiveChart.Location where:=xlLocationAsObject, Name:="sheet1" です
お礼
ありがとうございます。 ただ、やはりコードエラーになってしまいます・・・。
- redfox63
- ベストアンサー率71% (1325/1856)
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") といった具合で取得できます
補足
ご回答ありがとうございます。 いただいた回答の意味はある程度理解できたのですが、 実際にご教授頂いた以下の記述ができませんでした。 ↓この部分と set ch = ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowLabelAndPercent, _ HasLeaderLines:=True ↓この部分 set sh = Shapes( "Chart " & s(2)) 色々試してみたのですが・・・、ダメでした。 それから、これは、どの部分にあたるのでしょう?? > Locationメソッドの返り値をChart型の変数で受けて たびたびすみませんが、ご教授よろしくお願い致します。
お礼
なるほど・・・、このような手法があったのですね。 ありがとうございます! 別スレで合わせて教えて頂きたいことがありますので、 お時間が許すようでしたらご回答願えないでしょうか。 http://oshiete1.goo.ne.jp/qa3259420.html