上図のグラフは、セル範囲A1:D4からグラフを作成しています。この元データを変更してみましょう。
Sub Sample() ActiveSheet.ChartObjects(1).Chart.SetSourceData Range("A1:C3") End Sub
グラフの元データ範囲を設定するSetSourceDataメソッドの書式は、次の通りです。
グラフ.SetSourceData Source, PlotBy
引数Sourceには、セル範囲を指定します。上記のようにワークシートを指定しないと、アクティブシートとみなされます。引数PlotByにはプロットする方向を指定できます。
グラフの参照範囲を変更するには、SetSourceDataメソッドのほかにも、Formulaプロパティを使う手もあります。いずれにしても、こうした処理ではいかにセルのアドレスを特定するかがポイントになります。そのへんの詳しい話は、下記のページをご覧ください。
Excel 2003で、元データ範囲を変更すると、次のようなコードが生成されます。
Sub Macro() ActiveSheet.ChartObjects(1).Activate ActiveChart.ChartArea.Select ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:C3"), _ PlotBy:=xlRows ActiveWindow.Visible = False Windows("Sample.xls").Activate End Sub
シート名やブック名を調整して、Excel 2007でこのコードを実行してみます。
【Excel 2007での実行結果】
Excel 2003のコードは、そのままExcel 2007でも動作します。