I am trying to build some custom themes for excel charts in a dashboard. Upon recording a macro to see how these are implemented, the macro recorded the following code;
ActiveChart.ClearToMatchStyle
ActiveChart.ChartStyle = 268
I have searched high and low via google to find a list of these chartstyles, or any documentation on how to customize them. Every search returns links for the chart type constants, i.e. xlLine, xlPie etc. NOT the themed charts available on the Chart Tools-Design tab in the Excel ribbon.
If anyone can point me in the right direction it would be much appreciated.
EDIT:
There is minimal to no documentation available for these Chart Style constants, so I created a sample workbook with all of the Chart Style types displayed as pie charts. It is available for you here. at least you will have a visual representation of the chart prior to choosing the type.
The workbook can be viewed here, if anyone knows how to add a downloadable version in the post please comment
View the workbook here
You can build it yourself with the following code, just add a sheet named ChartStyles and create a data table named GolfRoundsPlayed and use this data
Month Rounds Played
Jan 42
Feb 53
Mar 77
Apr 124
May 198
Jun 288
Jul 312
Aug 303
Sep 264
Oct 149
Nov 54
Dec 33
Sub BuildChartStyleSheet()
Dim targetChart As Chart
Dim targetSheet As Worksheet
Dim top As Long
Dim x As Integer, chtTitle As String
top = 15
Dim dataRange As Range
Set dataRange = Range("GolfRoundsPlayed")
Set targetSheet = Sheets("ChartStyles")
Application.ScreenUpdating = False
For x = 1 To 353
If x > 1 Then top = top + 128
On Error Resume Next
Set targetChart = targetSheet.Shapes.AddChart2(x, xlPie, 2, top, 230, 125).Chart
chtTitle = "ChartStyle for ChartStyle #" & x
With targetChart
.SetSourceData Source:=dataRange
.chartTitle.Text = chtTitle
.chartTitle.Format.TextFrame2.TextRange.Font.Size = 11
End With
Next x
Application.ScreenUpdating = True
End Sub
Further to comment on MSDN that:
You can use a number from 1 to 48 to set the chart style.
My test shows that range 201 to 352 is valid as well. This is across all chart types.
Create an Excel workbook looks like this - note I already added a chart so ws.ChartObjects(1)
can reference something:
The run this code - you can play with the Stop
s to see what is happening in more detail.
Option Explicit
Sub UnderstandChartStyle()
Dim ws As Worksheet
Dim cht As ChartObject
Dim varTypes As Variant
Dim i As Integer, j As Integer
varTypes = GetChartTypes
Set ws = ThisWorkbook.Worksheets(1)
Set cht = ws.ChartObjects(1)
For j = LBound(varTypes) To UBound(varTypes)
cht.Chart.ChartType = varTypes(j)
For i = 1 To 1000
On Error Resume Next
cht.Chart.ChartStyle = i
If Err.Number = 0 Then
Debug.Print "Chart type: " & varTypes(j) & "; Chart style: " & i & "; Sum: " & varTypes(j) + i
Else
Debug.Print "Chart style error: " & i
End If
Stop
Next i
Stop
Next j
End Sub
Function GetChartTypes() As Variant
Dim i As Integer
Dim varTypes(1 To 73) As Integer
varTypes(1) = -4169
varTypes(2) = -4151
varTypes(3) = -4120
varTypes(4) = -4102
varTypes(5) = -4101
varTypes(6) = -4100
varTypes(7) = -4098
varTypes(8) = 1
varTypes(9) = 4
varTypes(10) = 5
varTypes(11) = 15
For i = 12 To 73
varTypes(i) = i + 39
Next i
GetChartTypes = varTypes
End Function
The code for GetChartTypes
is based from this table:
| GROUPING | CHART TYPE | VALUE | VBA CONSTANT |
|------------- |----------------------------------------------- |------- |---------------------------- |
| 3DAREA | 3D AREA | -4098 | xl3DArea |
| 3DAREA | 3D STACKED AREA | 78 | xl3DAreaStacked |
| 3DAREA | 3D 100% STACKED AREA | 79 | xl3DAreaStacked100 |
| 3DBAR | 3D CLUSTERED BAR | 60 | xl3DBarClustered |
| 3DBAR | 3D STACKED BAR | 61 | xl3DBarStacked |
| 3DBAR | 3D 100% STACKED BAR | 62 | xl3DBarStacked100 |
| 3DCOLUMN | 3D CLUSTERED COLUMN | 54 | xl3DColumnClustered |
| 3DCOLUMN | 3D COLUMN | -4100 | xl3DColumn |
| 3DCOLUMN | 3D CONE COLUMN | 105 | xlConeCol |
| 3DCOLUMN | 3D CYLINDER COLUMN | 98 | xlCylinderCol |
| 3DCOLUMN | 3D PYRAMID COLUMN | 112 | xlPyramidCol |
| 3DCOLUMN | 3D STACKED COLUMN | 55 | xl3DColumnStacked |
| 3DCOLUMN | 3D 100% STACKED COLUMN | 56 | xl3DColumnStacked100 |
| AREA | AREA | 1 | xlArea |
| AREA | STACKED AREA | 76 | xlAreaStacked |
| AREA | 100% STACKED AREA | 77 | xlAreaStacked100 |
| BAR | CLUSTERED BAR | 57 | xlBarClustered |
| BAR | STACKED BAR | 58 | xlBarStacked |
| BAR | 100% STACKED BAR | 59 | xlBarStacked100 |
| BUBBLE | 3D BUBBLE, BUBBLE WITH 3D EFFECTS | 87 | xlBubble3DEffect |
| BUBBLE | BUBBLE | 15 | xlBubble |
| COLUMN | CLUSTERED COLUMN | 51 | xlColumnClustered |
| COLUMN | STACKED COLUMN | 52 | xlColumnStacked |
| COLUMN | 100% STACKED COLUMN | 53 | xlColumnStacked100 |
| CONE | CLUSTERED CONE COLUMN | 99 | xlConeColClustered |
| CONE | STACKED CONE COLUMN | 100 | xlConeColStacked |
| CONE | 100% STACKED CONE COLUMN | 101 | xlConeColStacked100 |
| CONEBAR | CLUSTERED CONE BAR | 102 | xlConeBarClustered |
| CONEBAR | STACKED CONE BAR | 103 | xlConeBarStacked |
| CONEBAR | 100% STACKED CONE BAR | 104 | xlConeBarStacked100 |
| CYLINDER | CLUSTERED CYLINDER COLUMN | 92 | xlCylinderColClustered |
| CYLINDER | STACKED CYLINDER COLUMN | 93 | xlCylinderColStacked |
| CYLINDER | 100% STACKED CYLINDER COLUMN | 94 | xlCylinderColStacked100 |
| CYLINDERBAR | CLUSTERED CYLINDER BAR | 95 | xlCylinderBarClustered |
| CYLINDERBAR | STACKED CYLINDER BAR | 96 | xlCylinderBarStacked |
| CYLINDERBAR | 100% STACKED CYLINDER BAR | 97 | xlCylinderBarStacked100 |
| DOUGHNUT | DOUGHNUT | -4120 | xlDoughnut |
| DOUGHNUT | EXPLODED DOUGHNUT | 80 | xlDoughnutExploded |
| LINE | 3D LINE | -4101 | xl3DLine |
| LINE | LINE | 4 | xlLine |
| LINE | LINE WITH MARKERS | 65 | xlLineMarkers |
| LINE | STACKED LINE | 63 | xlLineStacked |
| LINE | 100% STACKED LINE | 64 | xlLineStacked100 |
| LINE | STACKED LINE WITH MARKERS | 66 | xlLineMarkersStacked |
| LINE | 100% STACKED LINE WITH MARKERS | 67 | xlLineMarkersStacked100 |
| PIE | 3D PIE | -4102 | xl3DPie |
| PIE | 3D EXPLODED PIE | 70 | xl3DPieExploded |
| PIE | BAR OF PIE | 71 | xlBarOfPie |
| PIE | EXPLODED PIE | 69 | xlPieExploded |
| PIE | PIE | 5 | xlPie |
| PIE | PIE OF PIE | 68 | xlPieOfPie |
| PYRAMID | CLUSTERED PYRAMID BAR | 109 | xlPyramidBarClustered |
| PYRAMID | STACKED PYRAMID BAR | 110 | xlPyramidBarStacked |
| PYRAMID | 100% STACKED PYRAMID BAR | 111 | xlPyramidBarStacked100 |
| PYRAMID | CLUSTERED PYRAMID COLUMN | 106 | xlPyramidColClustered |
| PYRAMID | STACKED PYRAMID COLUMN | 107 | xlPyramidColStacked |
| PYRAMID | 100% STACKED PYRAMID COLUMN | 108 | xlPyramidColStacked100 |
| RADAR | RADAR | -4151 | xlRadar |
| RADAR | FILLED RADAR | 82 | xlRadarFilled |
| RADAR | RADAR WITH DATA MARKERS | 81 | xlRadarMarkers |
| SCATTER | SCATTER | -4169 | xlXYScatter |
| SCATTER | SCATTER WITH LINES | 74 | xlXYScatterLines |
| SCATTER | SCATTER WITH LINES AND NO DATA MARKERS | 75 | xlXYScatterLinesNoMarkers |
| SCATTER | SCATTER WITH SMOOTH LINES | 72 | xlXYScatterSmooth |
| SCATTER | SCATTER WITH SMOOTH LINES AND NO DATA MARKERS | 73 | xlXYScatterSmoothNoMarkers |
| STOCK | STOCK HLC (HIGH-LOW-CLOSE) | 88 | xlStockHLC |
| STOCK | STOCK OHLC (OPEN-HIGH-LOW-CLOSE) | 89 | xlStockOHLC |
| STOCK | STOCK VHLC (VOLUME-HIGH-LOW-CLOSE) | 90 | xlStockVHLC |
| STOCK | STOCK VOHLC (VOLUME-OPEN-HIGH-LOW-CLOSE) | 91 | xlStockVOHLC |
| SURFACE | 3D SURFACE | 83 | xlSurface |
| SURFACE | 3D SURFACE WIREFRAME | 84 | xlSurfaceWireframe |
| SURFACE | SURFACE TOP VIEW | 85 | xlSurfaceTopView |
| SURFACE | SURFACE TOP VIEW WIREFRAME | 86 | xlSurfaceTopViewWireframe |
HTH