- 締切済み
マクロでグラフのデータ範囲を換える
散布図のグラフの参照データをマクロによって変更したいのですが、エラーが出て困っています。どこが誤っているのかご指摘いただければ幸いです。 ワークシート2にあるグラフ1について、 その1つ目のグラフを変更したい。 xの値をワークシート1の (a,7)~(z,7)に yの値を同じく(a,10)~(z,10)にしたいと思っています。 このオブジェクトはこのプロパティかメソッドをサポートしないとのエラーが出ます。 Set range1 = worksheets(1).Range(Cells(a, 7), Cells(z, 7)) Set range2 = worksheets(1).Range(Cells(a, 10), Cells(z, 10)) With Worksheets(2).ChartObjects("グラフ 1") .SeriesCollection(1).XValues = range2 .SeriesCollection(1).Values = range1 End With
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- pauNed
- ベストアンサー率74% (129/173)
不可能ではありません。 条件1)ActiveなBookにWorksheetが2枚以上ある。 条件2)左から1枚目のシートにグラフの元データがある。 仮に、変更後のデータはXValuesが1~10行の7列目。 Valuesが1~10行の10列目。 条件3)左から2枚目のシートに系列が1以上あるグラフが1つある。 条件4)左から2枚目のシートは保護がかかっていない。 以上確認後、下記試してみてください。 Option Explicit Sub test() Dim r1 As Range Dim r2 As Range Dim a As Long Dim z As Long a = 1 z = 10 With Worksheets(1) Set r1 = .Range(.Cells(a, 7), .Cells(z, 7)) Set r2 = .Range(.Cells(a, 10), .Cells(z, 10)) End With With Worksheets(2).ChartObjects(1).Chart .SeriesCollection(1).XValues = r1 .SeriesCollection(1).Values = r2 End With Set r1 = Nothing Set r2 = Nothing End Sub これでエラーが出る場合、少量のサンプルデータと 上記コード程度の実際の記述コードをご提示ください。 また、OSの種別とEXCELのバージョンも。 (申し訳ありませんがこれで解決しない場合、次のレスは5/1以降になりますm(_ _)m)
- pauNed
- ベストアンサー率74% (129/173)
こんにちは。 >With Worksheets(2).ChartObjects("グラフ 1") With Worksheets(2).ChartObjects("グラフ 1").Chart と変更してみてください。 (参考) http://msdn.microsoft.com/library/ja/vbaxl11/html/xlobjSeries1.asp また、Cellsの親Objectが指定されていませんから、 Worksheets(1)がActivesheetでない場合を考慮すると With Worksheets(1) Set range1 = .Range(.Cells(a, 7), .Cells(z, 7)) Set range2 = .Range(.Cells(a, 10), .Cells(z, 10)) End With としたほうが良いです^ ^
補足
ありがとうございます。 そのよう変更したところ、 「Series クラスの XValuesプロパティを変更できません」 とのエラーがでました。 これはどういう状態なんでしょうか。 ひょっとして、マクロでは不可能ということでしょうか。。。