元データ(セル範囲)を変更する


SetSourceDataメソッドでセル範囲を設定する

上図のグラフは、セル範囲A1:D4からグラフを作成しています。この元データを変更してみましょう。

Sub Sample()
    ActiveSheet.ChartObjects(1).Chart.SetSourceData Range("A1:C3")
End Sub

グラフの元データ範囲を設定するSetSourceDataメソッドの書式は、次の通りです。

グラフ.SetSourceData Source, PlotBy

引数Sourceには、セル範囲を指定します。上記のようにワークシートを指定しないと、アクティブシートとみなされます。引数PlotByにはプロットする方向を指定できます。

グラフの参照範囲を変更するには、SetSourceDataメソッドのほかにも、Formulaプロパティを使う手もあります。いずれにしても、こうした処理ではいかにセルのアドレスを特定するかがポイントになります。そのへんの詳しい話は、下記のページをご覧ください。

マクロとVBAのテクニック「グラフの参照範囲を変更する」

Excel 2003のコードは動くか

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でも動作します。