wenn Du die Bezeichnungen auf dem Blatt änderst, passt Dein Code natürlich nicht mehr. Du könntest z.B. den Namen mit dem Zellinhalt abgleichen. Entweder über eine Zelladressierung oder Du gibst den Zellen Namen ... Dann kannst Du die Datenreihen sonstwie benennen und es passt immer.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Falls es sich jemand anschauen möchte kann er sich gerne melden und ich schicke ihm die Datei privat zu. Aber da gewisse firmeninterne Informationen enthalten sind möchte ich sie nicht öffentlich hochladen.
11.10.2024, 17:17 (Dieser Beitrag wurde zuletzt bearbeitet: 11.10.2024, 17:20 von HKindler.)
Hi,
wir eiern hier schon 5 Seiten rum, ohne dass außer Screenshots von dir etwas gekommen wäre. Noch nicht einmal einen kopierbaren Code gibt es von dir. Und jetzt auch noch das. Darf ich dir einmal freundlich diese Seiten empfehlen? Sie sind nicht von mir, haben aber meine volle Zustimmung!
ich kann natürlich nicht für alle sprechen, aber für gewöhnlich ist der Sinn eines kostenlosen Forums ja keine persönliche Einzelberatung. Aber wenn du einen Freelancer für die Umsetzung deines Problems suchst, bietet sich vielleicht ein entsprechendes Portal wie fiverr, upwork oder freelance.de an. Dann hast du im Zweifel für deine wichtigen Daten auch noch eine gerichtsfeste NDA dabei.
Zeit und Geld sparen könntest du wahrscheinlich (wie bereits mehrfach erwähnt), wenn du eine Beispiel-Datei (kein Bild) zur Verfügung stellst, aus der dein Problem hervorgeht. Allerdings müsstest du dafür etwas Zeit investieren, damit dir kostenlos geholfen werden kann. Das bietet dir darüber hinaus die einmalige Möglichkeit, dich in VBA weiterzuentwickeln.
Primäres Ziel sollte sein, dass jede Alternative beim Ein- und Ausblenden über die Schaltfläche rechts für alle Linien und Balken die gleiche Farbe nutzt.
Falls einfach möglich, dann wäre es schön, wenn auch die Linienart mitgegeben wird und die Beschriftung nur ganz rechts am Rand - am besten fett in der Linienfarbe dargestellt wird (nur der letzte Datenpunkt) - die restlichen Beschriftungen in den Vorjahren sollen nicht dargestellt werden.
genau wie erwartet, du fragst in deinem FarbenZuordnen-Code den Namen aller Datenreihen ab. In einem Select Case-Statement möchtest du auf bestimmte Namen reagieren. Allerdings heißt keine deiner Datenreihen so, wie du es erwartest. Beim Klick auf Alternative zwei lauten die Namen der Datenreihen:
Code:
? CF Case #6 ? NPV Case #6 ? CF Case #5 ? NPV Case #5 ? CF Case #4 ? NPV Case #4 ? CF Case #3 ? NPV Case #3 ? CF Case #2 ? NPV Case #2
Im Select Case erwartest du allerdings Namen wie "CF a. tax cum. Case #1 BASE Case". Die sind offensichtlich nicht identisch. Wie soll VBA da entscheiden, was du meinst. Wie ebenfalls bereits erwähnt, wäre es der übliche weg, die Farben zur Designzeit einzustellen. Warum willst du das überhaupt programmatisch lösen, wenn du offensichtlich noch nicht genügend VBA-Kenntnisse hast?
Im übrigen scheint es mir sehr umständlich, zum Ein-und Ausblenden von Datenreihen die Datenquelle ein- und auszublenden (und dann zu allem überfluss auch noch mit vorherigem selektieren und aktivieren). Du kannst über die .FullSeriesCollection auf alle Datenreihen zugreifen und mit der .IsFiltered-Eigenschaft festlegen, ob sie sichtbar ist, oder nicht. Ein FlipFlop-Schalter könnte dann so aussehen:
Code:
Sub flipVisibility(series_id As Long) With Me.ChartObjects(1).Chart.FullSeriesCollection(series_id) .IsFiltered = Not .IsFiltered End With End Sub
Viele Grüße derHöpp
Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:1 Nutzer sagt Danke an derHoepp für diesen Beitrag 28 • StrammerMax
Den ersten Part verstehe ich noch. Auch wenn ich nicht weiß, wieso die Datenreihen so komisch heißen. Ich beziehe mich doch 1:1 auf die Bezeichnung im Blatt Graph Database. Ich probiere morgen mal, ob ich das umgebaut bekomme - und ob das schon das Problem löst.
Zu dem 2. Part. Klingt interessant - allerdings kann ich mit den 2-3 Anweisungen nichts anfangen. Im Zielbild soll man jede Datenreihe über einen Button aktivieren / deaktivieren können. Das hatte ich früher schon mal. Dabei braucht man nach meinem Vorgehen aber eine recht komplexe Logik, die prüft was gerade aktiv und was inaktiv ist bevor man Teile ein- oder ausblendet. Blende ich z.B. Datenreihe NPV ein und habe nur Alternative 1 und 2 angewählt, so darf nicht der NPV von Alternative 3-10 eingeblendet werden. Falls es dafür eine einfachere Logik gibt bin ich immer offen.
Bisher war die einzige Lösung, die ich gefunden habe um die Datenreihe beim Deaktivieren aus der Grafik verschwinden zu lassen das Ausblenden der jeweiligen Datenquelle. Überschreibt man die Werte mit NV() oder Ähnlichem, dann bleiben NV() Werte in der Grafik und Legende stehen. Blende ich die Datenquelle aus, so fliegt die komplette Datenreihe aus der Grafik als würde sie nicht existiieren.
Ich bekomme es hin, dass die Säulen und die obere Linie richtig gefärbt werden. Eine Ausnahme ist noch, dass eine Säule von Alternative 2 nicht mitgefärbt wird... weiß der Geier wieso. Bei Alternative 1 und 3 funktioniert es problemlos. Und der Code ist überall identisch.
Und mir fehlt die 3. Datenreihe (die Linie ganz unten). Ich verstehe nicht, wieso diese beim Debuggen überhaupt nicht auftaucht - und wie ich das ändern kann.