Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1920to1924
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Code einem bestimmten Diagramm zuweißen

Code einem bestimmten Diagramm zuweißen
16.02.2023 11:02:46
Andreas
Hi zusammen,
habe einen Code, der mir Säulen einfärben soll.
Das funktioniert auch super :) Danke an die Helfer von damals =D
Jetzt habe ich das gute Stück auf ein Tabellenblatt kopiert, in dem aber mehr wie 1 Diagramm liegt.
Denke das es daran liegt, dass es nicht mehr funktioniert.
Wie muss ich den Code den Umschreiben, wenn ich möchte dass er nur auf dieses eine Diagramm, heißt: DiagrammFarbenSäulen anspringt?
Sub SauelenFaerben()
Dim rngBereich As Range
Dim lngZeile As Long
Dim strBereich As String
Dim varFarbe As Variant
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
strBereich = Split(.Formula, ",")(1)
Set rngBereich = Range(strBereich)
For lngZeile = 1 To rngBereich.Cells.Count
Select Case rngBereich.Cells(lngZeile).Value
Case "yellow"
varFarbe = 65535
Case "blue"
varFarbe = 14395790
Case "red"
varFarbe = 255
Case "green"
varFarbe = 5296274
Case "orange"
varFarbe = 49407
Case "black"
varFarbe = 8421504
Case "white"
varFarbe = 15921906
Case "multicolored"
varFarbe = 10498160
Case "others"
varFarbe = 12566463
' Case "schwarz-weiß-schwarz"
' varFarbe = "schwarz-weiß-schwarz"
End Select
If IsNumeric(varFarbe) Then
.Points(lngZeile).Interior.Color = varFarbe
Else
' hier der Code wie die Säule gefärbt werden soll wenn "schwarz-weiß-schwarz" in der Zelle steht
End If
Next lngZeile
End With
End Sub

Danke vorab, falls jemand helfen kann.
Gruß Andreas

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code einem bestimmten Diagramm zuweißen
16.02.2023 12:41:31
Yal
Hallo Andreas,
zuerst solltest Du Dir einen Bild machen, welche Diagram es auf diese Seite gibt:
Sub Diagramname_auflisten()
Dim D As ChartObject
    For Each D In ActiveSheet.ChartObjects
        Debug.Print D.Name
    Next
End Sub
Die Liste erscheint in dem Direktfenster im VBA-Editor (Ansicht, Direktfenster).
Dann kannst Du
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
in
With ActiveSheet.ChartObjects("Diagram_Kunde1").Chart.SeriesCollection(1)
umwandeln.
Wenn Du schon weisst, wie dein Diagram hiesst, kannst Du Schritte 1 überspringen.
VG
Yal
Anzeige
AW: Code einem bestimmten Diagramm zuweißen
16.02.2023 13:08:58
Beverly
Hi Andreas,
nichts leichter als das: da dir bekannt ist, wie das Diagramm heißt, ersetzt du in der Zeile
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
bei ChartObjects(1) den Index 1 durch den Diagrammnamen (natürlich in dem Fall Anführungszeichen!)
With ActiveSheet.ChartObjects("DiagrammFarbenSäulen").Chart.SeriesCollection(1)
Bis später
Karin

AW: Code einem bestimmten Diagramm zuweißen
16.02.2023 14:15:32
Yal
ach so, ja: übersehen, dass die Diagramname schon bekannt ist.
Anzeige
AW: Code einem bestimmten Diagramm zuweißen
16.02.2023 15:36:25
Andreas
Vielen Dank euch beiden =) Schön das du dich gemeldet hat Karin, der ursprüngliche Code ist ja von dir :D
Funktioniert wie es soll.
Eine Frage hätte ich aber noch dazu. Es geht doch auch das der Code immer läuft, sobald was in der Mappe berechnet wird oder?
Aktuell muss ich den Code immer manuell ausführen, wenn sich Daten geändert haben. Ist aber nur in meiner Originalmappe so, hab es dann versucht in einer Beispielmappe nachzubilden, da habe ich das Problem aber nicht. Original kann ich euch leider nicht einstellen, das ist so viel zu groß.
Denke daher wenn ich es so bewerkstelligen könnte, das der Code bei Änderungen der Daten automatisch abgerufen wird, könnte ich das Problem umgehen.
Falls Ihr da noch eine Idee habt wäre das super.
Gruß Andreas
Anzeige
AW: Code einem bestimmten Diagramm zuweißen
16.02.2023 16:30:44
Beverly
Hi Andreas,
ja, der Code kam mir bekannt vor... ;-)
Benutze das Change-Ereignis des Tabellenblattes, um den Code zielgerichtet bei Änderung bestimmter Zellen zu starten. Welche konkreten Zellen du dabei überwachen musst kann ich leider so nicht sagen, da ich die Mappe nicht kenne, aber ich nehme an, dass er bei Änderung der Diagrammdaten ausgeführt werden soll? Dann musst du genau diese Zellen überwachen.
Bis später
Karin

AW: Code einem bestimmten Diagramm zuweißen
16.02.2023 16:49:37
Andreas
Hi Karin,
danke für deine Rückmeldung.
Lt. Google muss ich also schreiben:
Private Sub Worksheet_Change(ByVal Target As Range)
Mein Bereich den ich überwachen möchte ist im Tabellenblatt Farbe die Zellen BD26:BD33 wie genau man das dann aber formulieren muss, kann ich nicht finden. Kann man überhaupt mehrere Zellen überwachen? Zur Not würde auch die Zelle BD26 ausreichen.
Mein Versuch sah so aus:
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Address Worksheet("Farbe"), "BD26"
End Sub
Sub SauelenFaerben()
Dim rngBereich As Range
Dim lngZeile As Long
Dim strBereich As String
Dim varFarbe As Variant
With ActiveSheet.ChartObjects("DiagrammFarbenSäulen").Chart.SeriesCollection(1)
Die letzte Zeile führt dann aber zu einem Laufzeitfehler.
Vielleicht hast du eine Idee?
Danke und schönen Abend
Gruß Andreas
Anzeige
AW: Code einem bestimmten Diagramm zuweißen
16.02.2023 17:38:10
Beverly
Hi Andreas,
selbstverständlich kann man auch mehrere Zellen überwachen:
' dieser Code gehört ins Codemodul des Blattes "Farben"
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("BD26:BD33")) Is Nothing Then
        SauelenFaerben
    End If
End Sub
Wenn sich das Diagramm nicht im Blatt "Farben" befindet, löst der Code in der Sub SauelenFaerben() mit der Angabe ActiveSheet - was ja bedeutet "aktives Tabellenblatt" - natürlich einen Fehler aus, weil er das Diagramm nicht findet. Du musst also anstelle ActiveSheet den Namen des Blattes angeben, auf dem sich das Diagramm befindet - also nach diesem Prinzip:
With WorkSheets("Diagramme").ChartObjects("DiagrammFarbenSäulen").Chart.SeriesCollection(1)
Den Namen des Blattes musst du selbstverständlich anpassen.
Bis später
Karin

Anzeige
AW: Code einem bestimmten Diagramm zuweißen
17.02.2023 13:37:17
Andreas
Hi Karin,
Danke für deine Hilfe.
Leider schaffe ich es nicht, das ganze auch in meiner Originalmappe zum laufen zu bringen.
Hab versucht es nochmal in einer Beispielmappe nachzubilden, da funktioniert es komischerweise oO.
Muss also nur noch den Fehler in meinem Original finden... Da kommen die Werte aus gefilterten Tabellen und solche Sachen, vielleicht liegts daran.
Möchte auf jeden Fall für deine Hilfe bedanken, in der Beispielmappe läufts ja :D und wünsche ein schönes Wochenende.
Gruß Andreas
AW: Code einem bestimmten Diagramm zuweißen
17.02.2023 13:40:54
Beverly
Hi Andreas,
kann es sein, dass sich in den Zellen BD26:BD33 Formeln befinden? Dann greift das Worksheet_Change-Ereignis natürlich nicht. In diesem Fall musst du die Zellen überwachen, aus denen BD26:BD33 die Werte bezieht.
Bis später
Karin

Anzeige
AW: Code einem bestimmten Diagramm zuweißen
17.02.2023 13:43:34
Andreas
Hi Karin,
ja da sind Formeln drin.
Danke für den Tipp :D
Das Problem ist, dass sich die Basiswerte aus einer Tabelle zusammensetzen, die Werte darin sich aber nicht ändern.
Zählt eine Pivot-Tabelle auch als Formel, oder kann ich die zugehörige Pivot-Tabelle überwachen?
Gruß Andreas
AW: Code einem bestimmten Diagramm zuweißen
17.02.2023 13:50:36
Beverly
Hi Andreas,
die Pivot-Tabelle lässt sich auch überwachen - aber da musst du selbst mal recherchieren, da ich mich mit Pivot nicht beschäftige.
Bis später
Karin

AW: Code einem bestimmten Diagramm zuweißen
17.02.2023 14:55:43
Andreas
Das hört sich spitze an, dann mach ich mich mal auf die Suche.
Danke für die Info mit der Formel in der Überwachten Zelle, das hat mir denke ich schon mal vieeeeeeeeeel Zeit gespart :D
Schönes Wochenende Karin
Gruß Andreas
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige