みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel VBA グラフオブジェクトの使用方法について

Excel2003のVBAについて教えて下さい。
以下の(1)~(4)のコードを用いて セル"A1"に設定された値をグラフスケール(最大値)に設定しようとしています。

(1) scaleData = Worksheets("シート1").Range("A1").Value
(2) Set chartObj = ActiveSheet.ChartObjects(1)
(3) Set chart1 = chartObj.Chart
(4) chart1.Axes(xlValue).MaximumScale = scaleData

グラフオブジェクト単体(グループ化しない)時は問題なく、グラフスケールの設定が行えたのですが、グラフオブジェクトやラベル、ボタンなどを結合すると、(3)で、以下のエラーメッセージが出て、グラフスケールの設定が行えません。

「WorksheetクラスのChartObjectsプロパティを取得できません。」

グループ化することにより、グラフオブジェクトの指定方法が異なるのでしょうか?
解決方法をご存知の方、教えて下さい。宜しくお願い致します。

投稿日時 - 2010-03-10 18:49:35

QNo.5741212

すぐに回答ほしいです

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

#1さんと、表現が異なりますが、同じ事ですね。おまけ付きです。XL2000用です。
'シートモジュールの場合
Sub test()
Me.Shapes("Group 4").GroupItems("Chart 1").DrawingObject.Chart.Axes(xlValue).MaximumScale = 2
End Sub

'おまけ グループ化された図形も含め、図形の名前リストアップ
Sub test2()
Dim shp As Shape
For Each shp In Me.Shapes
Debug.Print Me.Name & ":" & shp.Name
If shp.Type = msoGroup Then Call test3(shp)
Next shp
End Sub

Sub test3(shp As Shape)
Dim shp2 As Shape
For Each shp2 In shp.GroupItems
Debug.Print shp.Name & ":" & shp2.Name
If shp2.Type = msoGroup Then Call test3(shp2)
Next shp2
End Sub

投稿日時 - 2010-03-10 21:57:53

お礼

早速の回答ありがとうございます。
教えていただい方法で、グラフスケールの変更が行えました。
又、図形の名前のリストアッププログラムもありがとうございます。
シート上のオブジェクト名称を参照することができました。

投稿日時 - 2010-03-11 09:49:44

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

>グループ化することにより、グラフオブジェクトの指定方法が異なるのでしょうか?

マクロに行く前にまずワークシート画面上で,グループ化したグラフをちょんちょんと触ってみます。いつも通り「軸をWクリックして軸の書式設定を出す」とか出来ますか? 出来ませんね。
でも,多少コツは要りますがグラフオブジェクトの編集に上手く入り,そこから各部設定を編集することはちゃんとできますので,「グラフオブジェクトとしての操作」が出来ないわけでは勿論ありません。


で。
途中は飛ばして結論まで行くと,たとえば
activesheet.groupobjects(1).shaperange.groupitems(1).drawingobject.chart.axes(xlvalue).maximumscale = 10
のように連結を丁寧に追っていけば操作できます。

投稿日時 - 2010-03-10 21:29:16

お礼

早速の回答ありがとうございます。
教えていただい方法(コード)で、グラフスケールの変更が行えました。
>多少コツは要りますがグラフオブジェクトの編集に上手く入り
小生のやり方が悪いのだと思いますが、グラフオブジェクトの編集は行えませんでした。(コツをつかめませんでした..)

投稿日時 - 2010-03-11 09:46:56

あなたにオススメの質問