Themed Chart Styles for Excel charts using VBA

后端 未结 1 740
清酒与你
清酒与你 2020-12-30 17:41

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;

相关标签:
1条回答
  • 2020-12-30 18:18

    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 Stops 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

    0 讨论(0)
提交回复
热议问题