29.08.2016, 15:11
Hallo liebe Gemeinde.
Ich habe ein Problem. Ich habe ein Makro aus dem Internet gefunden, dass mir die Diagramme anhand bedingter Formatierungen in der jeweiligen Farbe formatiert. Problem bei der Sache ist, dass er das für alle Diagramme macht, die in dem Arbeitsblatt sind. Da ich leider ein Laie bin was VBA angeht bräuchte ich eure Hilfe. Wie muss ich den Code so ändern, dass sich der Code nur auf einzelne Diagramme bezieht und nicht auf alle in dem Arbeitsblatt?
Danke schon mal, hoffentlich komme ich endlich zu einer Lösung. :)
So sieht der Code jetzt aus:
Sub cellcolorstochart()
Dim ochart As ChartObject
Dim myseries As Series
Dim formulasplit As Variant
Dim sourerange As Range
Dim sourcerangecolor As Long
Dim numberofdatapoints As Long
Dim ipoint As Long
'Loop through all charts in the active sheet
For Each ochart In ActiveSheet.ChartObjects
'loop through all series in the target chart
For Each myseries In ochart.Chart.SeriesCollection
numberofdatapoints = myseries.Points.Count
For ipoint = 1 To numberofdatapoints
'get source data range for the target series
formulasplit = Split(myseries.Formula, ",")
'capture the first cell in the source range then trap the color
Set SourceRange = Range(formulasplit(2)).Item(ipoint)
'sourcerangecolor = SourceRange.Interior.Color
'if coloring without conditional formatting
'Set SourceRange = Range(formulasplit(2)).Item(ipoint)
sourcerangecolor = SourceRange.DisplayFormat.Interior.Color
On Error Resume Next
'Coloring for Excel 2003
'myseries.Interior.Color = sourcerangecolor
'myseries.Border.Color = sourcerangecolor
'myseries.MarkerBackgroundColorIndex = sourcerangecolor
'myseries.MarkerForegroundColorIndex = sourcerangecolor
'Coloring for Excel 2007 and 2010
myseries.Points(ipoint).MarkerBackgroundColor = sourcerangecolor
myseries.Points(ipoint).MarkerForegroundColor = sourcerangecolor
'myseries.Points(ipoint).Format.Line.ForeColor.RGB = sourcerangecolor
'myseries.Points(ipoint).Format.Line.BackColor.RGB = sourcerangecolor
myseries.Points(ipoint).Format.Fill.ForeColor.RGB = sourcerangecolor
'myseries.Points(ipoint).Format.Line.ForeColor.RGB = sourcerangecolor
Next
Next myseries
Next ochart
End Sub
Ich habe ein Problem. Ich habe ein Makro aus dem Internet gefunden, dass mir die Diagramme anhand bedingter Formatierungen in der jeweiligen Farbe formatiert. Problem bei der Sache ist, dass er das für alle Diagramme macht, die in dem Arbeitsblatt sind. Da ich leider ein Laie bin was VBA angeht bräuchte ich eure Hilfe. Wie muss ich den Code so ändern, dass sich der Code nur auf einzelne Diagramme bezieht und nicht auf alle in dem Arbeitsblatt?
Danke schon mal, hoffentlich komme ich endlich zu einer Lösung. :)
So sieht der Code jetzt aus:
Sub cellcolorstochart()
Dim ochart As ChartObject
Dim myseries As Series
Dim formulasplit As Variant
Dim sourerange As Range
Dim sourcerangecolor As Long
Dim numberofdatapoints As Long
Dim ipoint As Long
'Loop through all charts in the active sheet
For Each ochart In ActiveSheet.ChartObjects
'loop through all series in the target chart
For Each myseries In ochart.Chart.SeriesCollection
numberofdatapoints = myseries.Points.Count
For ipoint = 1 To numberofdatapoints
'get source data range for the target series
formulasplit = Split(myseries.Formula, ",")
'capture the first cell in the source range then trap the color
Set SourceRange = Range(formulasplit(2)).Item(ipoint)
'sourcerangecolor = SourceRange.Interior.Color
'if coloring without conditional formatting
'Set SourceRange = Range(formulasplit(2)).Item(ipoint)
sourcerangecolor = SourceRange.DisplayFormat.Interior.Color
On Error Resume Next
'Coloring for Excel 2003
'myseries.Interior.Color = sourcerangecolor
'myseries.Border.Color = sourcerangecolor
'myseries.MarkerBackgroundColorIndex = sourcerangecolor
'myseries.MarkerForegroundColorIndex = sourcerangecolor
'Coloring for Excel 2007 and 2010
myseries.Points(ipoint).MarkerBackgroundColor = sourcerangecolor
myseries.Points(ipoint).MarkerForegroundColor = sourcerangecolor
'myseries.Points(ipoint).Format.Line.ForeColor.RGB = sourcerangecolor
'myseries.Points(ipoint).Format.Line.BackColor.RGB = sourcerangecolor
myseries.Points(ipoint).Format.Fill.ForeColor.RGB = sourcerangecolor
'myseries.Points(ipoint).Format.Line.ForeColor.RGB = sourcerangecolor
Next
Next myseries
Next ochart
End Sub