他のシート上で作成したグラフをコピーして利用する場合、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(・・・
|