Ich habe eine Excel 2007-Arbeitsmappe mit mehreren Diagrammen auf einem Arbeitsblatt (gestapeltes Balkendiagramm und eine Reihe als (unsichtbare) Linie für die Summen). Abhängig von der vom Benutzer ausgewählten Zelle sollten die Balkendiagramme Konnektoren haben oder nicht.
Dazu habe ich eine kleine, ereignisgesteuerte VBa-Routine, Worksheet_Change
die die Diagramme durchläuft und die Konnektoren entweder mit objChart.SetElement msoElementLineSeriesLine
oder setzt objChart.SetElement msoElementLineNone
.
Dies funktioniert in der Regel in 90 % der Fälle. Manchmal objChart.SetElement
tritt jedoch bei einigen, unterschiedlichen Diagrammen ein Fehler -2147467259 auf The specified dimension is not valid for the current chart type.
und das Diagramm wird beschädigt. Es sieht dann folgendermaßen aus:
Der Fehler lässt sich beheben, indem man die Datei erneut öffnet – auch wenn sie nach dem Auftreten des Fehlers gespeichert wurde. Es scheint sich also um eine Art Anzeigeproblem zu handeln.
Antwort1
Ich denke, SetElement msoElementLineSeriesLine ist nicht so robust wie die alte Syntax ChartGroups(i).HasSeriesLines
msoElementLineSeriesLine scheint Diagrammgruppen, Achsengruppen usw. nicht zu verstehen. Vielleicht gerät es ins Stocken, wenn die erste Reihe, die es erkennt, kein gestapelter Balken oder keine gestapelte Säule ist.
Sub AddSeriesLines()
Dim cg As ChartGroup
For Each cg In ActiveChart.ChartGroups
Select Case cg.SeriesCollection(1).ChartType
Case xlColumnStacked, xlColumnStacked100, xlBarStacked, xlBarStacked100
cg.HasSeriesLines = True ' False to remove
End Select
Next
End Sub
Lustigerweise gab es bei der Neugestaltung der Diagramm-Engine von 2007/2010 noch eine Möglichkeit, Serienlinien in die Benutzeroberfläche einzufügen, aber im Jahr 2013 kann ich diese nicht finden (obwohl, wie ich sagte, der obige Code einwandfrei funktioniert).