- ベストアンサー
マクロでグラフ範囲を変更するには
シート上の全グラフに対して、データ範囲のうち上から4行目までだけをグラフに使うように、マクロで一気に変更したいのです。(今は、使っている行数はグラフによって違う) そもそも、現在のデータ範囲をどうやって取得すればよいでしょうか? ネットや本で探しても見つかりません。マクロは初心者なので、調べ方がわるいと思うのですが・・・何かとっかかりだけでも教えてもらえると助かります!
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
何がしたいか分かりませんが もしかしたら全てのシートの全グラフでしょうか? 全てシートの全てのグラフのデータ範囲は下記で分かると思います Sub aaa() Dim cc As ChartObject Dim c1 As Variant For ii = 1 To Worksheets.Count '全てのシートをループ Worksheets(ii).Select For Each cc In ActiveSheet.ChartObjects '全てのグラフをループ Set zzz = cc.Chart.SeriesCollection For Each c1 In zzz MsgBox c1.Formula Next Next Next End Sub 何かとっかかりになればいいですが
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
私は実例も無く、「>上から4行目までだけをグラフに使うように、マクロで一気に変更したいのです」の意味も良く判らないので、答えられませんが、 (1)グラフのデータ範囲は ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B5") のように、この部分だと思う。 (2)本当に難しいのは1つ1つのグラフを、VBAで捉える記述法だと思う。 「>マクロは初心者なので、」と言うことであれば難しいと思う。 Sub test01() Dim ch As Object For Each ch In Worksheets("sheet1").ChartObjects MsgBox ch.Name Next End Sub を参考にして、両者組み合わせて、出来ないかやって見てください。
お礼
回答ありがとうございます。 説明不足ですいません。 今、グラフの系列数はグラフ毎にさまざまですが、すべてのグラフの系列数を3つに減らしたいのです。 (見出し1行+データ3行の計4行だけをグラフの範囲にしたい) なので、SetSourceData SourceのRangeを、「今のグラフ範囲の1行目~4行目」と指定したいのですが、「今のデータ範囲」をどうやって表すかわからないのです。もし方法がありましたら教えてくださいませ。 1つのシート上の全グラフを操作するマクロは使っているので「グラフを捉える記述法」はなんとかなりそうです。
お礼
回答ありがとうございます。大変参考になりました。 Formulaでは系列ごとのデータ範囲がわかるのですね。とすると、4行目までだけをグラフに使うようにするには、最初の系列から取得したデータ範囲を基にして「+3」すればよさそうですね。 その場合、SetSourceDataでRangeを指定するとき、「Formulaで取得した行番号」をどうやって表すのかか・・・自分でも調べますがもしご存知でしたらよろしくお願いします。