• 締切済み

マクロでグラフのデータ範囲を換える

散布図のグラフの参照データをマクロによって変更したいのですが、エラーが出て困っています。どこが誤っているのかご指摘いただければ幸いです。 ワークシート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

みんなの回答

  • pauNed
  • ベストアンサー率74% (129/173)
回答No.2

不可能ではありません。 条件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)
回答No.1

こんにちは。 >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 としたほうが良いです^ ^

incd
質問者

補足

ありがとうございます。 そのよう変更したところ、 「Series クラスの XValuesプロパティを変更できません」 とのエラーがでました。 これはどういう状態なんでしょうか。 ひょっとして、マクロでは不可能ということでしょうか。。。

関連するQ&A