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

解決済みの質問

グラフの参照元を相対参照で記述するには

マクロ初心者です。

あるグラフを最初テンプレートで作っておいて、他のデータでも簡単に同じグラフを作れるようにしたいです。
マクロの記録で「相対参照」があったので、これでできると思ったのですが、グラフのセルは絶対参照になるようです。下記のようになってりまいます。

Sub Macro6()
'
' Macro6 Macro
'

'
ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveChart.PlotArea.Select
ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveCell.Select
ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveChart.PlotArea.Select
ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveChart.SeriesCollection(1).XValues = "='Sheet1'!J3:J11"
ActiveChart.SeriesCollection(1).Values = "='Sheet1'!M3:M11"
ActiveChart.SeriesCollection(2).XValues = "='Sheet1'!J3:J11"
ActiveChart.SeriesCollection(2).Values = "='Sheet1'!P3:P11"
ActiveCell.Select
End Sub

具体的にやりたい動作は、
1.相対的な場所を決定するセルを選択(表の左上のセルなど)
2.
ActiveChart.SeriesCollection(1).XValues = "='1.のセルから右に2列進んだセル:1.のセルから右に2列下に8列進んだセル"
ActiveChart.SeriesCollection(1).Values = "='1.のセルから右に4列進んだセル:1.のセルから右に4列下に8列進んだセル"
ActiveChart.SeriesCollection(2).XValues = "='1.のセルから右に2列進んだセル:1.のセルから右に2列下に8列進んだセル"
ActiveChart.SeriesCollection(1).Values = "='1.のセルから右に6列進んだセル:1.のセルから右に6列下に8列進んだセル"

というふうにしたいです。

ご指導お願いします。

投稿日時 - 2011-10-25 21:53:53

QNo.7094384

困ってます

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

グラフには相対参照のベースとなるセル位置が存在しないので、相対参照記法はもちろん使えません。

が、参照範囲を相対的に求める方法はあります。キーワードはRangeオブジェクトとOffsetプロパティ。

Series.XValueおよびValueはRangeオブジェクトの範囲をそのまま受けられるので、グラフの範囲をRangeオブジェクトで求めてそのまま放り込んでやればOKです。

投稿日時 - 2011-10-25 23:49:26

ANo.1

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

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

回答(1)

あなたにオススメの質問