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

Farben im Pie Chart per VBA ändern

Farben im Pie Chart per VBA ändern
12.02.2014 18:26:11
Matthias
Hallo liebe Excel-Gemeinde,
ich habe im Netz einen prima VBA Code (siehe Beispiel) gefunden, der mir hilft die Farben von _
eingefärbten Zellen direkt an einen Pie Chart weiterzugeben. Funktioniert prima! Allerdings _ wenn ich eine Zelle mit keiner Füllung "markiere", dann erkennt der Pie Chart das als Weiß an. Wie bekomme ich es hin, dass das Tortenstück dann quasi auch farblos (ohne Füllung) wird?

Sub ColorPies()
Dim cht As ChartObject
Dim i As Integer
Dim vntValues As Variant
Dim s As String
Dim myseries As Series
For Each cht In ActiveSheet.ChartObjects
For Each myseries In cht.Chart.SeriesCollection
If myseries.ChartType  xlPie Then GoTo SkipNotPie
s = Split(myseries.Formula, ",")(2)
vntValues = myseries.Values
For i = 1 To UBound(vntValues)
myseries.Points(i).Interior.Color = Range(s).Cells(i).Interior.Color
Next i
SkipNotPie:
Next myseries
Next cht
End Sub

Vielen Dank für Eure Hilfe!
Gruß Matthias
Hier das Beispiel
https://www.herber.de/bbs/user/89251.xlsm

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Farben im Pie Chart per VBA ändern
13.02.2014 08:26:45
fcs
Hallo Matthias,
du musst eine zusätzliche Prüfung der Zellfarbe auf nicht gefüllt einfügen. Dann kann man die Füllfarbe auf unsichtbar setzen.
Gruß
Franz
Sub ColorPies()
Dim cht As ChartObject
Dim i As Integer
Dim vntValues As Variant
Dim s As String
Dim myseries As Series
For Each cht In ActiveSheet.ChartObjects
For Each myseries In cht.Chart.SeriesCollection
If myseries.ChartType  xlPie Then GoTo SkipNotPie
s = Split(myseries.Formula, ",")(2)
vntValues = myseries.Values
For i = 1 To UBound(vntValues)
If Range(s).Cells(i).Interior.ColorIndex = xlColorIndexNone Then
myseries.Points(i).Format.Fill.Visible = msoFalse
Else
myseries.Points(i).Interior.Color = Range(s).Cells(i).Interior.Color
End If
Next i
SkipNotPie:
Next myseries
Next cht
End Sub

Anzeige
AW: Farben im Pie Chart per VBA ändern
13.02.2014 10:07:49
Matthias
Hallo Franz,
das funktioniert super.
Vielen lieben Dank!
Matthias

AW: Farben im Pie Chart per VBA ändern
14.02.2014 17:17:24
Matthias
Hallo Franz,
Ich kann es mir leider nicht erklären. Beim ersten Mal funktioniert der code prima, d.h. markiert man eine Zelle farblos, dann wird der Chart an der dementsprechenden Zelle farblos. Markiert die Zelle farbig, so wird der Chart auch wieder farbig. Markiert aber denn die Zelle wieder farblos passiert NICHTS. Wieso?
Kopiert man beispielsweise den Chart so funktioniert es dort auch genau einmal (?).

AW: Farben im Pie Chart per VBA ändern
14.02.2014 18:18:36
fcs
Hallo Mathias,
ich hab jetzt noch ein wenig mit den Objekteigenschaften experimentiert.
Probiere mal die folgende Variante.
Gruß
Franz
Sub ColorPies()
Dim cht As ChartObject
Dim i As Integer
Dim vntValues As Variant
Dim s As String
Dim myseries As Series
For Each cht In ActiveSheet.ChartObjects
For Each myseries In cht.Chart.SeriesCollection
If myseries.ChartType  xlPie Then GoTo SkipNotPie
s = Split(myseries.Formula, ",")(2)
vntValues = myseries.Values
For i = 1 To UBound(vntValues)
With myseries.Points(i).Format.Fill
.Solid
If Range(s).Cells(i).Interior.ColorIndex = xlColorIndexNone Then
.Visible = False
Else
.Visible = True
.ForeColor.RGB = Range(s).Cells(i).Interior.Color
End If
End With
Next i
SkipNotPie:
Next myseries
Next cht
End Sub

Anzeige
AW: Farben im Pie Chart per VBA ändern
14.02.2014 19:18:11
Matthias
Hallo Franz,
erstmal Danke, dass du mir so tapfer zur Seite stehst. Leider ist es der gleiche in Grün. Man hat einen Versuch und dann passiert wieder nicht. Komisch? Ich kann es mir echt nicht erklären.

AW: Farben im Pie Chart per VBA ändern
14.02.2014 19:21:29
Matthias
Hallo Franz,
ein blindes Huhn "trinkt auch mal ein Korn". Ich habe Deinen Code an einer Stelle abgeändert
statt xlColorIndexNone ersetzt durch -4142....und es funktioniert.
Sub ColorPies()
Dim cht As ChartObject
Dim i As Integer
Dim vntValues As Variant
Dim s As String
Dim myseries As Series
For Each cht In ActiveSheet.ChartObjects
For Each myseries In cht.Chart.SeriesCollection
If myseries.ChartType  xlPie Then GoTo SkipNotPie
s = Split(myseries.Formula, ",")(2)
vntValues = myseries.Values
For i = 1 To UBound(vntValues)
With myseries.Points(i).Format.Fill
.Solid
If Range(s).Cells(i).Interior.ColorIndex = -4142 Then
.Visible = False
Else
.Visible = True
.ForeColor.RGB = Range(s).Cells(i).Interior.Color
End If
End With
Next i
SkipNotPie:
Next myseries
Next cht
End Sub
Danke und Gruß
Matthias
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige