2017-11-23 17 views
0

こんにちは私は既存のグラフにデータを追加するための少し質問があります。Excel VBAグラフにデータを追加する

今、シートの2番目の行に何年もの数ヶ月のデータシリーズを含むワークシートがあります。したがって、月は例えばB2 1.2017、C2 2.2017であり、行3,4,5,6,7および8にはその月のデータが常に存在する。

今、私のマクロでは、新しい月と下の行のデータを既存のグラフに追加するだけです。

Worksheets("Summary").ChartObjects("Chart").Activate 
    ActiveChart.SeriesCollection.Add _ 
    Source:=Worksheets("Summary").Range("B2:B8") 

今、これは単に新しいデータ系列を作成しないが、チャートに追加新しいデータが実際に存在しない:

私がこれまで持っているコードは、このです。

答えて

0

これは.Activateを使用して直接アクセスしません。これは私が

wsMetric.ChartObjects("Chart").Chart 

'This one will link data from another workbook 
.SeriesCollection(1).Values = "='[" & wb.Name & "]" & ws.Name & "'!$" & sCol & "$" & lRow & ":$" & sCol2 & "$" & lRow2 
'Debug.Print "='[" & wb.Name & "]" & ws.Name & "'!$" & sCol & "$" & lRow & ":$" & sCol2 & "$" & lRow2 'Returns ='[Book1.xlsm]Sheet1'!$A$1:$A$11 


'This one will link data from the same workbook, same or different sheet 
.SeriesCollection(1).Values = "=" & ws.Name & "!$" & sCol & "$" & lRow & ":$" & sCol2 & "$" & lRow 2 
'Debug.print "=" & ActiveSheet.Name & "!$" & scol & "$" & lrow & ":$" & scol2 & "$" & lrow2 'Returns =Sheet1!$A$1:$A$11 
End With 

を使うだろうかチャート

1

以下のコードは少し長く見えるかもしれないが、それは新しいを追加するための最も安全な方法ですSeriesと既存のグラフとのデータ。

Objectsのコードはすべて安全なものになるように設定しています。

コード

Option Explicit 

Sub AddSeriestoChart() 

Dim ws As Worksheet 
Dim ChtRng As Range 
Dim ChtObj As ChartObject 
Dim Ser As Series 

' set the Worksheet object 
Set ws = ThisWorkbook.Worksheets("Summary") 

' Set the Chart Object 
Set ChtObj = ws.ChartObjects("Chart") 

' Set the Range of the Chart's source data 
Set ChtRng = ws.Range("B2:B8") 

With ChtObj 
    ' add a new series to chart 
    Set Ser = .Chart.SeriesCollection.NewSeries 

    ' set the source data of the new series 
    Ser.Values = "=" & ChtRng.Address(False, False, xlA1, xlExternal) 
End With 

End Sub 

編集1:以下のコードのようなものを使用、既存のSeriesデータを変更する:

With ChtObj   
    For i = 1 To .Chart.SeriesCollection.Count 
     Set Ser = .Chart.SeriesCollection(i) 

     ' set the source data of the new series 
     Set ChtRng = ws.Range("B" & i + 2) 
     Ser.Values = "=" & ChtRng.Address(False, False, xlA1, xlExternal) 

     Set ChtRng = Nothing 
    Next i 
End With 
+0

を今、それは実際にデータを挿入んテーブルではなく、私が望むものではない新しいシリーズに。 データを既存のシリーズに挿入したい たとえば セルb3をシリーズ1に、セルb4をシリーズ2に追加 – webjoh

+0

@webjoh **編集1 **の編集コードを参照してください。少し編集する必要がありますあなたの必要に合わせて –

+0

これは、残念ながら、以前シリーズにあったものすべてを削除します。 しかし、私は実際にはこれをexsitingシリーズに追加する必要があります。 私はあなたのテーブルの例を挙げます: 1.2017ターンオーバー50; 2.2017売上高60 今私はデータを挿入したときに3.2017の売上高のデータを追加し、他のデータはすべて削除しないようにします。 – webjoh

関連する問題