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

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

Excel97,2000



戻る


Excel Word Access VBA! モーグ