HOME > 即効テクニック > Excel VBA > グラフ関連のテクニック > Chartの操作−他シートからのチャートのコピーとソースデータの変更

即効テクニック

グラフ関連のテクニック

Chartの操作−他シートからのチャートのコピーとソースデータの変更

(Excel 97/2000)
他のシート上で作成したグラフをコピーして利用する場合、Copy & Pasteが可能ですが、この場合ソースデータは変更されませんので、コピー先のデータをソースデータとするにはSetSourceDataメソッドやSeriesCollection以下のValuesプロパティーを使用します。
(前提)Sheet1上にグラフ1つ
  ActiveSheetにコマンドボタン
  Sheet1,ActiveSheetにセルA1から連続するデータ(グラフのソースデータ)
'============================
'1.SetSorceDataメソッド使用
'============================
'⇒ソースデータをSheet1からActiveSheet上のデータに切り替えます。

Private Sub CommandButton1_Click()

ActiveCell.Activate 'コマンドボタンからの実行に必要(97のみ)

Sheet1.ChartObjects(1).Copy

ActiveSheet.Paste

With ActiveSheet.ChartObjects(1)

'セルA1を基準とセルセル領域をデータとして設定
.Chart.SetSourceData _
    Source:=Range("A1").CurrentRegion, PlotBy:=xlColumns
.Left = 300'位置合わせ
.Top = 100

End With

End Sub

'============================
'2.SeriesCollection使用
'============================
'(前提)他のシート上のデータを元にしたグラフ
'    ActiveSheet上にセルA1から連続するデータ
'    ※サンプル1と同じ状態を想定
'    (他のシートで作成したグラフを手動でコピー)

Private Sub CommandButton2_Click()

ActiveCell.Activate 'コマンドボタンからの実行に必要(97のみ)

Dim ChartObj As ChartObject
Set ChartObj = ActiveSheet.ChartObjects(1)

With ChartObj.Chart.SeriesCollection

'アクティブシートの2列2行目より10行目までのデータ範囲を指定
For i = 1 To .Count
    .Item(i).Values = Range(Cells(2, i + 1), Cells(10, i + 1))
Next i

End With

End Sub
※SeriesCollection(Index) あるいは SeriesCollection(系列名)で系列単独で指定することも可能。

EX.)ActiveChart.SeriesCollection("Cos").Values = Range(・・・