Clever-Excel-Forum

Normale Version: VBA: Zuordnung von Legendeneinträgen zu Reihen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Ihr Wissenden,

habe gerade mal wieder Grenzen meines Wissens erreicht:

In einem (x-y-)Diagramm möchte ich Legendeneinträge formatieren per VBA. Da aber einige der Diagrammlinien zur sekundären Ordinate zugeordnet sind, zählt die Legende die Einträge anders, als ich die Reihen definiert habe und sie auch im Diagramm aufgelistet werden (wenn ich im Diagramm dort unter Diagrammentwurf "Daten auswählen" klicke). Wie kann ich in VBA ermitteln, zu welcher Diagrammlinie ein bestimmter Legendeneintrag gehört?

Danke für Eure Hilfen,
RaiSta
Hallöchen,

prüfe den Legendeneintrag in allen Linien.

Den Eintrag findest Du z.B.in ActiveChart.FullSeriesCollection(1).Name
(14.08.2023, 19:02)schauan schrieb: [ -> ]prüfe den Legendeneintrag in allen Linien.

Den Eintrag findest Du z.B.in ActiveChart.FullSeriesCollection(1).Name

wie kann ich den Legendeneintrag(!) prüfen? Die 'FullSeriesCollection(×)' gibt ja die angegebene Reihe in der Grafik zurück. Aber wie komme ich an den Text, der mit dem ersten (×-ten...) Legendeneintrag verbunden ist?
Da habe ich nix gefunden in den Eigenschaften (oder Methoden) der Legendeneinträge, was mir den zugehörigen Text liefert.

...vielleicht habe ich aber auch nur Tomaten auf den Augen ... ?

Gruß und Dank,
RaiSta
Hallöchen,

nur mal ein paar Gedanken:

1)
Du kannst doch in einer Schleife alle durchgehen und statt der 1 nimmst Du den Schleifenzähler...

2)
Du kannst auch ohne die Schleifenzahl mit For Each die SeriesCollection durchgehen, im Prinzip
For Each i_tems In ActiveChart.FullSeriesCollection

3)
Du könntest also in der Schleife auch gleich prüfen, ob eine Linie auf der primären oder sekundären Achse liegt ...
Du kannst z.B. mit der Codeaufzeichnung einiges rausfinden. Wenn Du z.B. eine Linie auf die Sekundärachse legst, bekommst Du was in der Art:
ActiveChart.FullSeriesCollection(3).AxisGroup = 2
und entsprechend die Auswertung in der Schleife nur auf der Sekundärachse fortsetzen, also z.B.
If i_tems.AxisGroup = 2 Then MsgBox i_tems.Name