Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ActiveChart.SeriesCollection.NewSeries -> neue Ser

Forumthread: ActiveChart.SeriesCollection.NewSeries -> neue Ser

ActiveChart.SeriesCollection.NewSeries -> neue Ser
28.06.2018 12:32:14
Alina
Hi liebe Wissende,
ich habe es hinbekommen, eine Tabelle zu programmieren
Die bezieht sich auf Werte aus drei Zeilen; klappt soweit
Jetzt sollen Werte aus einer weiteren Zeile auch noch beachtet werden (Zeile 209)
Ich dachte das macht man mit ActiveChart.SeriesCollection.NewSeries
Aber wenn ich hier dann ActiveChart.FullSeriesCollection(4). anspreche, heist es objektfehler....
Seht ihr den Fehler:
ProjName = ActiveSheet.Name
'Klappt:
.Range(.Cells(205, 2), .Cells(207, 63)).Select
.Range(.Cells(205, 2), .Cells(207, 63)).Activate
.Shapes.AddChart2(276, xlAreaStacked, .Range("B81").Left + 9.75, .Range("B81").Top + 4.5, .Cells(81, 63).Left - .Cells(81, 2).Left + 2.5, .Range("B106").Top - .Range("B81").Top + 5.5).Select
ActiveChart.Axes(xlValue).Select
ActiveChart.Axes(xlValue).MaximumScale = 1
ActiveWindow.DisplayGridlines = False
ActiveChart.SetElement (msoElementLegendNone)
ActiveChart.SetElement (msoElementChartTitleNone)
ActiveChart.SetElement (msoElementPrimaryCategoryAxisNone)
ActiveSheet.Shapes("Diagramm 4").Fill.Visible = msoFalse
Application.CommandBars("Format Object").Visible = False
ActiveSheet.Shapes("Diagramm 4").Line.Visible = msoFalse
ActiveSheet.ChartObjects("Diagramm 4").Activate
ActiveChart.FullSeriesCollection(1).Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 0, 0)
.Transparency = 0.75
.Solid
End With
ActiveChart.FullSeriesCollection(2).Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 192, 0)
.Transparency = 0.75
.Solid
End With
ActiveChart.FullSeriesCollection(3).Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 176, 80)
.Transparency = 0.75
.Solid
End With
'HIER IST DANN DER FEHLER
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(4).Name = "='" & ProjName & "'!$B$209'" 'hier noch Änderung
ActiveChart.FullSeriesCollection(4).ChartType = xlLineMarkersStacked
ActiveChart.FullSeriesCollection(4).Select
With Selection.Format.Line
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorText1
.Weight = 1
End With
With Selection.Format.Fill
.Visible = msoFalse
End With
With Selection
.MarkerStyle = 8
.MarkerSize = 6
.ApplyDataLabels
End With
ActiveChart.FullSeriesCollection(4).DataLabels.Select
With Selection
.Position = xlLabelPositionAbove
.ShowRange = True
.ShowValue = False
.Format.TextFrame2.TextRange. _
InsertChartField msoChartFieldRange, "='" & ProjName & "'!$C$208:$BZ$208", 0
End With
End With
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Der Fehler liegt darin, dass...
01.07.2018 10:28:43
Beverly
Hi,
...sich in der betreffenden Codezeile hinter der 209 noch ein überflüssiger ' befindet.
Noch ein Hinweis: in VBA kann in 99% aller Fälle auf Select und Activate verzichtet werden
Dim chrDia As Chart
Dim rngBereich As Range
ProjName = ActiveSheet.Name
With Worksheets(ProjName)
Set rngBereich = .Range(.Cells(205, 2), .Cells(207, 63))
Set chrDia = .Shapes.AddChart2(276, xlAreaStacked, .Range("B81").Left + 9.75, _
.Range("B81").Top + 4.5, .Cells(81, 63).Left - .Cells(81, 2).Left + 2.5, _
.Range("B106").Top - .Range("B81").Top + 5.5).Chart
With chrDia
.SetSourceData Source:=rngBereich, PlotBy:=xlRows
.Axes(xlValue).MaximumScale = 1
.SetElement (msoElementLegendNone)
.SetElement (msoElementChartTitleNone)
.SetElement (msoElementPrimaryCategoryAxisNone)
.ChartArea.Fill.Visible = msoFalse
.ChartArea.Format.Line.Visible = msoFalse
With .FullSeriesCollection(1).Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 0, 0)
.Transparency = 0.75
.Solid
End With
With .FullSeriesCollection(2).Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 192, 0)
.Transparency = 0.75
.Solid
End With
With .FullSeriesCollection(3).Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 176, 80)
.Transparency = 0.75
.Solid
End With
'HIER WAR DANN DER FEHLER
With .SeriesCollection.NewSeries
.Name = "='" & ProjName & "'!$B$209" '


Anzeige
AW: Der Fehler liegt darin, dass...
02.07.2018 08:41:58
Alina
Guten Morgen!
Das hätte ich ja im leben nicht gesehen!
Danke!!
;
Anzeige

Infobox / Tutorial

ActiveChart.SeriesCollection.NewSeries: Fehlerbehebung und Anwendung


Schritt-für-Schritt-Anleitung

Um eine neue Serie in einem Diagramm mit ActiveChart.SeriesCollection.NewSeries hinzuzufügen, folge diesen Schritten:

  1. Diagramm erstellen: Erstelle ein Diagramm mit Shapes.AddChart2. Beispiel:

    Dim chrDia As Chart
    Set chrDia = ActiveSheet.Shapes.AddChart2(276, xlAreaStacked).Chart
  2. Datenquelle festlegen: Setze die Datenquelle für das Diagramm:

    chrDia.SetSourceData Source:=YourDataRange
  3. Neue Serie hinzufügen: Verwende ActiveChart.SeriesCollection.NewSeries:

    With ActiveChart.SeriesCollection.NewSeries
        .Name = "='Sheet1'!$B$209"
        .Values = "='Sheet1'!$C$209:$BZ$209"
    End With
  4. Formatierung anpassen: Formatiere die neue Serie nach Bedarf:

    With ActiveChart.FullSeriesCollection(4).Format.Fill
        .Visible = msoTrue
        .ForeColor.RGB = RGB(255, 0, 0)
    End With

Häufige Fehler und Lösungen

  • Objektfehler: Wenn Du beim Hinzufügen der neuen Serie ActiveChart.FullSeriesCollection(4) verwendest und einen Fehler erhältst, überprüfe, ob die Serie tatsächlich existiert. Möglicherweise hast Du nicht genug Serien erstellt.

  • Überflüssige Zeichen: Achte darauf, dass Du keine überflüssigen Anführungszeichen oder Apostrophe in den Referenzen verwendest. Ein häufiger Fehler ist, dass nach der Zeile 209 ein überflüssiger Apostroph steht.

  • Verwendung von Select und Activate: In den meisten Fällen kannst Du Select und Activate vermeiden, um den Code effizienter zu gestalten. Stattdessen kannst Du direkt auf die Objekte zugreifen.


Alternative Methoden

Wenn Du ActiveChart.SeriesCollection.NewSeries nicht verwenden möchtest, gibt es alternative Ansätze:

  • Direktes Hinzufügen von Daten: Anstatt eine neue Serie hinzuzufügen, kannst Du die Daten direkt in eine bestehende Serie einfügen.

  • VBA-Arrays: Du kannst auch VBA-Arrays verwenden, um Daten zu speichern und sie dann der Serie zuzuweisen, ohne ein Diagramm zu aktivieren.


Praktische Beispiele

Hier ist ein praktisches Beispiel, um eine neue Serie zu einem bestehenden Diagramm hinzuzufügen:

Sub AddNewSeriesToChart()
    Dim chrDia As Chart
    Dim ProjName As String
    ProjName = ActiveSheet.Name

    Set chrDia = ActiveSheet.ChartObjects(1).Chart
    With chrDia.SeriesCollection.NewSeries
        .Name = "='" & ProjName & "'!$B$209"
        .Values = "='" & ProjName & "'!$C$209:$BZ$209"
        .ChartType = xlLineMarkersStacked
    End With
End Sub

Tipps für Profis

  • Verwendung von With-Anweisungen: Verwende With-Anweisungen, um den Code übersichtlicher und effizienter zu gestalten.

  • Debugging: Nutze Debug.Print oder MsgBox, um Werte und Objekte während der Entwicklung zu überprüfen.

  • Syntax-Fehler vermeiden: Achte darauf, dass die Syntax immer korrekt ist, insbesondere bei der Verwendung von Anführungszeichen und Klammern.


FAQ: Häufige Fragen

1. Warum erhalte ich einen Objektfehler bei FullSeriesCollection? Der Fehler kann auftreten, wenn die angegebene Serie nicht existiert. Stelle sicher, dass Du genügend Serien im Diagramm hast, bevor Du darauf zugreifst.

2. Wie kann ich die Formatierung einer Serie ändern? Du kannst die Formatierung einer Serie ändern, indem Du auf FullSeriesCollection(index).Format zugreifst und die gewünschten Eigenschaften anpasst, z.B. .ForeColor.

3. Kann ich Select und Activate in meinem Code vermeiden? Ja, es wird empfohlen, sie zu vermeiden, um den Code effizienter und weniger fehleranfällig zu machen. Greife direkt auf die Objekte zu, ohne sie zu aktivieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige