Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1704to1708
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

VBA Säulendiagramm gleich Zellfarbe

VBA Säulendiagramm gleich Zellfarbe
12.08.2019 11:10:42
kili
Hallo Freunde,
mein Zellbereich C11 bis C251 hat verschiedene Hintergrundfarben.
Ich brauche einen VBA-Code, welcher mein Säulendiagramm in besagter Farbe darstellt.
Beispiel:
C11 ist rot
C12 ist grün
C13 ist rot
jetzt sollte die erste Säule rot, die mittlere grün und die dritte rot dargestellt werden.
Vielen Dank

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Säulendiagramm gleich Zellfarbe
12.08.2019 14:28:03
Beverly
Hi,
die Zellfarbe ist von Hand gesetzt oder handelt es sich um bedingte Formatierung? Falls von Hand dann z.B. so:
Sub SaeulenFaerben()
Dim strFormel As String
Dim lngPunkt As Long
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
For lngPunkt = 1 To .Points.Count
.Points(lngPunkt).Interior.Color = Range("C11:C251").Cells(lngPunkt).Interior.Color
Next lngPunkt
End With
End Sub


AW: VBA Säulendiagramm gleich Zellfarbe
12.08.2019 15:27:33
kili
Hallo Beverly,
dein Code funktioniert schon mal super.
Aber du hast Recht, ich habe vergessen zu erwähnen, dass die Zellfarben durch eine bedingte Formatierung zu Stande kommt.
Auch wichtig ist noch, dass sich meine Daten auf Tabellenblatt 1 befinden, das Diagramm aber auf Tabellenblatt 2 ist.
Bekommst du das auch noch hin?
LG
Anzeige
VBA Säulendiagramm gleich Zellfarbe bed.Format
12.08.2019 16:13:41
Beverly
Hi,
dann so:
Sub SaeulenFaerbenBedFormat()
Dim strFormel As String
Dim lngPunkt As Long
With Worksheets("Tabelle2").ChartObjects(1).Chart.SeriesCollection(1)
For lngPunkt = 1 To .Points.Count
.Points(lngPunkt).Interior.Color = _
Worksheets("Tabelle1").Range("C11:C251").Cells(lngPunkt).DisplayFormat.Interior. _
Color
Next lngPunkt
End With
End Sub


AW: VBA Säulendiagramm gleich Zellfarbe bed.Format
12.08.2019 17:15:14
kili
Beverly, du bist die Allerbeste.
Funktioniert primär einwandfrei.
Mein Problem ist, Excel holt sich minütlich andere Werte. Die Farben werden aber nicht zurückgesetzt.
Also angenommen, der erste Wert war mal rot, der zweite und dritte Wert waren mal grün, dann bleiben die Säulen rot, grün grün.
Ich bräuchte also abschließend eine Routine, welche vor deinem pefekten Code die Farben zurücksetzt.
LG
Anzeige
AW: VBA Säulendiagramm gleich Zellfarbe bed.Format
12.08.2019 17:19:01
Beverly
Hi,
WIE holt sich Excel minütlich die Daten - per Makro? Dann müsstest du, nachdem die Daten geholt wurde, mein Makro jedesmal neu ausführen (also am Ende das Makros welches die Daten holt).


Andere Möglichkeit
12.08.2019 18:32:28
Beverly
Hi,
eine andere Möglichkeit wäre noch, dass du das Calculate-Ereignis des Tabellenblattes nutzt, um mein Makro zu starten.


AW: Andere Möglichkeit
13.08.2019 13:06:37
kili
Hi,
ich hab lange rumprobiert, aber ich bekomms nicht hin.
Die minütliche Abfrage erfolgt nicht über ein Makro, sondern über PowerQuery.
Hier mal die Mappe: https://www.herber.de/bbs/user/131410.xlsb
Die Säulen des unteren Diagramms auf Tabellenblatt 4 sollen die Zellfarbe des Bereiches AE11 bis AE251
des Tabellenblatts 2 erhalten.
LG
***musste die Datei als .xlsb uploaden, da sie sonst zu groß war.
Anzeige
AW: Andere Möglichkeit
13.08.2019 16:24:11
Daniel
HI
machs ohne Makro!
wie ich dir schon schrieb, gehe so vor:
erweitere die Tabelle um die Spalten AF:AG.
Per Formel übernimmst du in Spalte AF den Wert aus AE, wenn er grün werden soll und in Spalte AG, wenn er rot werden soll.
dann machst du aus den Spalten AE:AF ein gestapeltes Säulendiagramm oder nebeneinander liegende Säulen mit 100% Reihenachsenüberlappung
und färbst die beiden Datenreihen entsprechend ein.
Gruß Daniel
Und wo ist das Problem?
13.08.2019 17:14:14
Beverly
Hi,
deinen Code kannst du einfach so anpassen:
Private Sub Worksheet_Calculate()
Application.ScreenUpdating = False
Dim strFormel As String
Dim lngPunkt As Long
With Worksheets("Tabelle4").ChartObjects("Diagramm 2").Chart
.Axes(xlValue, xlPrimary).MaximumScale = Worksheets("Tabelle2").Range("AD1").Value
.Axes(xlValue, xlPrimary).MinimumScale = Worksheets("Tabelle2").Range("AC1").Value
.Axes(xlValue, xlSecondary).MaximumScale = Worksheets("Tabelle2").Range("AD1").Value
.Axes(xlValue, xlSecondary).MinimumScale = Worksheets("Tabelle2").Range("AC1").Value
With .SeriesCollection(1)
For lngPunkt = 1 To .Points.Count
.Points(lngPunkt).Interior.Color = _
Worksheets("Tabelle2").Range("AE11:AE251").Cells(lngPunkt).DisplayFormat. _
Interior.Color
Next lngPunkt
End With
End With
Application.ScreenUpdating = True
End Sub
Das Diagramm muss dazu nicht selektiert werden.


Anzeige
AW: Und wo ist das Problem?
13.08.2019 19:22:10
kili
Hier nun das ultimative Endergebnis.
Diagramm 1 mit Teilen aus Beverly´s VBA-Code. Jetzt wird dieses Diagramm tatsächlich nicht mehr selektiert. :-)
Diagramm 2 mit der Methode von Stefan. Der VBA-Code von Beverly ist mit Sicherheit richtig, es gab auch keine Fehlermeldung, aber excel färbte mir die Säulen nicht wie gewünscht.
Vielen Dank nochmals euch beiden.
Das kann so auch nicht...
13.08.2019 19:57:01
Beverly
Hi,
...funktionieren, weil es sich nicht um Datenreihe 1 sondern Datenreihe 2 handelt, die gefärbt werden soll - das musst du natürlich anpassen:
Private Sub Worksheet_Calculate()
Application.ScreenUpdating = False
Dim strFormel As String
Dim lngPunkt As Long
With Worksheets("Tabelle4").ChartObjects("Diagramm 2").Chart
.Axes(xlValue, xlPrimary).MaximumScale = Worksheets("Tabelle2").Range("AD1").Value
.Axes(xlValue, xlPrimary).MinimumScale = Worksheets("Tabelle2").Range("AC1").Value
.Axes(xlValue, xlSecondary).MaximumScale = Worksheets("Tabelle2").Range("AD1").Value
.Axes(xlValue, xlSecondary).MinimumScale = Worksheets("Tabelle2").Range("AC1").Value
With .SeriesCollection(2)
For lngPunkt = 1 To .Points.Count
.Points(lngPunkt).Interior.Color = _
Worksheets("Tabelle2").Range("AE11:AE251").Cells(lngPunkt).DisplayFormat. _
Interior.Color
Next lngPunkt
End With
End With
Application.ScreenUpdating = True
End Sub


Anzeige
AW: Das kann so auch nicht...
13.08.2019 20:34:29
kili
Ahahahahahahahahaha......
Beverly, hab ich Dir schon gesagt, dass du die Aller-Aller-Beste bist.
Ich hatte von SeriesCollection noch nie was gehört, daher war mir auch nicht klar, dass die (1) für die erste Datenreihe steht.
Jetzt funktioniert alles wie es soll. Somit kann ich die beiden Hilfszeilen wieder löschen (nicht traurig sein Daniel***).
Dankeschööööööön!!!!!
****Und wenn ich zuvor einmal Stefan geschrieben habe, meinte ich natürlich Dich Daniel. Passiert, wenn ich mit mehreren Leuten gleichzeitig kommuniziere.
AW: VBA Säulendiagramm gleich Zellfarbe bed.Format
12.08.2019 17:51:17
Daniel
HI
wenns automatisch gehen soll, könntest du auch so vorgehen:
du erweiterst die Tabelle noch um so viele Spalten, wie du unterschiedliche Farben hast.
die Spalten nimmst du dann als Quelle ins Diagramm auf, jede Spalte als eigene Datenreihe mit der entsprechenden Farbe.
Per Formel "verteilst" du dann die Werte in die verschiedenen Spalten
wenn also alle Werte kleiner 10 grün und alle Werte größergleich 10 rot werden sollen, dann nimmst du die Spalten D und E als Quelle für das Diagramm.
in Spalte D kommt die Formel:
=Wenn(C11

in Spalte E kommt die Formel:
=wenn(C11

die Säulen der Spalte D färbst du dann grün und die Säulen der Spalte E rot.
Gruß Daniel
Anzeige
AW: VBA Säulendiagramm gleich Zellfarbe bed.Format
13.08.2019 16:23:17
kili
ok, ich hab den Vorschlag von Daniel übernommen.
Damit funktioniert jetzt alles einwandfrei.
Vielen Dank euch beiden!!!
LG
Wenn noch jemand weiß, wie ich ein Chart deselecte, wäre ich für diesen Tip auch noch sehr dankbar.
ActiveChart.Deselect funktioniert nicht.
AW: VBA Säulendiagramm gleich Zellfarbe bed.Format
13.08.2019 16:28:50
Daniel
HI
"deselect" gibt's nicht. da im Blatt immer ein Objekt selektiert sein muss, kannst du immer nur was anderes selektieren.
Gruß Daniel
AW: VBA Säulendiagramm gleich Zellfarbe bed.Format
13.08.2019 16:45:40
kili
Achso. Schade. Aber man kann nicht alles haben. :-)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige