Wie aktualisiert man die Werte oder den Bereich für ein Diagramm mit mehreren Serien?

Ich habe eine Tabelle mit mehreren Diagrammen. Ich hebe die data für die Diagramme auf 3 anderen Blättern. Ich versuche, bisher ohne Erfolg, die Diagramme zu aktualisieren, um zusätzliche data zu erfassen, wenn ich sie hinzufüge.

Ich habe verschiedene Dinge ausprobiert, basierend auf dem, was ich im Internet gesehen habe. Ich habe versucht, einen Bereich wie

Set SourceRange1 = Split(Join((GetArray(Sheets(1).Range("P6:" & GetLetterFromNumber(Sheets(1).Cells(6, Sheets(1).Columns.Count).End(xlToLeft).Column) & "6"))), "|"), "|") Set SourceRange2 = GetArray(Sheets(2).Range("P6:" & GetLetterFromNumber(Sheets(2).Cells(6, Sheets(2).Columns.Count).End(xlToLeft).Column) & "6"))) Set SourceRange3 = Application.Union(Worksheets(3).Range("P5", Sheets(3).Cells(5, Sheets(1).Columns.Count).End(xlToLeft)), Sheets(3).Range("P6", Sheets(3).Cells(6, Sheets(3).Columns.Count).End(xlToLeft))).Value 

und dann dem Diagramm wie folgt zuweisen:

 ActiveChart.SeriesCollection(1).Values = SourceRange1 ActiveChart.SeriesCollection(2).Values = SourceRange2 ActiveChart.SeriesCollection(3).Values = SourceRange3 

Dies gibt mir zur time den Bereich P5:x5 , aber es stellt die Diagrammserie nicht ein.

Nur als reference ist das GetArray eine function, die ich erstellt habe:

 Function GetArray(Range1 As Range) Dim Test() As String, cell As Range, i As Integer i = 0 ReDim Test(0) For Each cell In Range1 ReDim Preserve Test(i) Test(i) = cell.Value i = i + 1 Next cell GetArray = Test End Function 

Und so ist es die GetLetterFromNumber:

 Function GetLetterFromNumber(Number) GetLetterFromNumber = Split(Cells(1, Number).Address(True, False), "$")(0) End Function 

Mit dem aktuellen Setup wie dem Set SourceRange1 ich ein

Kompiliererrors: Kann Array nicht zugewiesen werden

Ich bekomme den gleichen Fehler auch bei den anderen. Ich habe SourceRange1-3 Setup wie Dim SourceRange1()

Wenn ich sie wie Dim SourceRange1 aufstelle, Dim SourceRange1 ich:

Laufzeiterrors '13':

Geben Sie Mismatch auf alle drei ein.

Wenn ich die SeriesCollection direkt wie SeriesCollection :

 ActiveChart.SeriesCollection(1).Values = GetArray(Sheets(1).Range("P6:" & GetLetterFromNumber(Sheets(1).Cells(6, Sheets(1).Columns.Count).End(xlToLeft).Column) & "6")) ActiveChart.SeriesCollection(2).Values = GetArray(Sheets(2).Range("P6:" & GetLetterFromNumber(Sheets(2).Cells(6, Sheets(2).Columns.Count).End(xlToLeft).Column) & "6")) ActiveChart.SeriesCollection(3).Values = GetArray(Sheets(3).Range("P6:" & GetLetterFromNumber(Sheets(3).Cells(6, Sheets(3).Columns.Count).End(xlToLeft).Column) & "6")) 

Die It weist allen Werten 0 zu, wenn sie für SeriesCollection(1) sein sollten:

 (20,30,40,50,60,10,20,30,40) 

Ich bin sicher, ich vermisse etwas Einfaches, ich weiß einfach nicht was. Wenn ich etwas in meiner Beschreibung vergessen habe, lass es mich wissen und ich kann es hinzufügen.

Ansonsten wird jede Hilfe, die ich bekommen kann, geschätzt.

Solutions Collecting From Web of "Wie aktualisiert man die Werte oder den Bereich für ein Diagramm mit mehreren Serien?"

Damit die Chart.SeriesCollection(1).Values dynamisch mit dem Range verwenden Sie etwas wie die folgende Zeile (vorausgesetzt, Ihr SourceRange1 Bereich ist korrekt definiert):

 ActiveChart.SeriesCollection(1).Values = "=" & SourceRange1.Address(True, True, xlA1, xlExternal) 

Bei der Arbeit mit Charts könnten Sie auch Folgendes in Betracht ziehen:

 Dim Cht as Chart Dim Ser as Series Set Cht = ActiveChart Set Ser = Cht.SeriesCollection(1) With Ser .Values = "=" & SourceRange1.Address(True, True, xlA1, xlExternal) End With