Этот код может устанавливать цвета срезов всех круговых диаграмм в моей электронной таблице на основе метки легенды каждого среза: `Sub SetPieChartColours ()
' Iterates through all pie charts in the dashboard and apply colours to the appropriate legends
' Colour indices:
' Passed (Green) 10
' Not Completed (Yellow) 19
' No run (Blue) 37
' Failed (Maroon) 18
' Failed Issue (Pink) 24
' Failed Defect (Red) 3
Dim savePtLabel As String
Dim ThisPt As String
Dim NumPoints As Integer
Dim x As Integer
Dim pie As ChartObject
For Each pie In ActiveSheet.ChartObjects
' Check that the current chart object is a pie chart
If pie.Chart.ChartType = xlPie Then
NumPoints = pie.Chart.SeriesCollection(1).Points.Count
For x = 1 To NumPoints
' Save the label currently attached to the current slice
If pie.Chart.SeriesCollection(1).Points(x).HasDataLabel = True Then
savePtLabel = pie.Chart.SeriesCollection(1).Points(x).DataLabel.Text
Else
savePtLabel = ""
End If
' Assign a new data label of just the point name
pie.Chart.SeriesCollection(1).Points(x).ApplyDataLabels Type:= _
xlDataLabelsShowLabel, AutoText:=True
ThisPt = pie.Chart.SeriesCollection(1).Points(x).DataLabel.Text
' Based on the label of this slice, set the color
Select Case ThisPt
Case "Failed-Defect"
pie.Chart.SeriesCollection(1).Points(x).Interior.ColorIndex = 3
Case "Failed-Issue"
pie.Chart.SeriesCollection(1).Points(x).Interior.ColorIndex = 24
Case "Failed"
pie.Chart.SeriesCollection(1).Points(x).Interior.ColorIndex = 18
Case "No Run"
pie.Chart.SeriesCollection(1).Points(x).Interior.ColorIndex = 37
Case "Not Completed"
pie.Chart.SeriesCollection(1).Points(x).Interior.ColorIndex = 18
Case "Passed"
pie.Chart.SeriesCollection(1).Points(x).Interior.ColorIndex = 10
Case Else
' Aroo! The label of the current slice doesn't match any expected labels
pie.Chart.SeriesCollection(1).Points(x).Interior.ColorIndex = 1
End Select
' Return the label to it's original state
pie.Chart.SeriesCollection(1).Points(x).ApplyDataLabels Type:=xlDataLabelsShowNone, AutoText:=True
Next x
End If
Next
End Sub
And this code can set barchart colours:
Sub SetBarChartColours ()
Dim savePtLabel As String
Dim ThisPt As String
Dim NumPoints As Integer
Dim x As Integer
Dim bar As ChartObject
For Each bar In ActiveSheet.ChartObjects
If bar.Chart.Name = "Dashboard Chart 5" Then
NumPoints = bar.Chart.SeriesCollection.Count
For x = 1 To NumPoints
MsgBox bar.Chart.Legend.LegendEntries(x).LegendKey.Interior.ColorIndex
Next x
End If
Next
End Sub` Может быть, может помочь вам!