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