我正在尝试为仪表板中的excel图表构建一些自定义主题。记录宏以了解如何实现后,宏记录了以下代码;

ActiveChart.ClearToMatchStyle
ActiveChart.ChartStyle = 268


我已经通过谷歌搜索了高低,以找到这些图表样式的列表,或有关如何自定义它们的任何文档。每次搜索都会返回图表类型常量的链接,即xlLine,xlPie等。Excel功能区中“图表工具-设计”选项卡上没有可用的主题图表。

如果有人能指出我正确的方向,将不胜感激。

编辑:

这些图表样式常量的可用文档很少甚至没有,因此我创建了一个示例工作簿,其中所有图表样式类型都显示为饼图。在这里为您提供。至少在选择类型之前,您将具有图表的直观表示。

可以在这里查看工作簿,如果有人知道如何在帖子中添加可下载的版本,请发表评论

View the workbook here

您可以使用以下代码自行构建它,只需添加一个名为ChartStyles的工作表并创建一个名为GolfRoundsPlayed的数据表并使用此数据

每月播放
一月42
2月53
77年3月
124年4月
198年5月
288年6月
312年7月
303年8月
264年9月
149年10月
十一月54
十二月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

最佳答案

进一步对MSDN发表评论:


您可以使用1到48之间的数字来设置图表样式。


我的测试表明201到352范围也是有效的。这适用于所有图表类型。

创建一个Excel工作簿如下所示-注意,我已经添加了一个图表,因此ws.ChartObjects(1)可以引用以下内容:
excel - 使用VBA的Excel图表的主题图表样式-LMLPHP

运行此代码-您可以使用Stop来更详细地了解正在发生的事情。

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


GetChartTypes的代码基于此表:

|分组|图表类型|值| VBA常数|
| ------------- | ----------------------------------- ------------ | ------- | ---------------------------- |
| 3DAREA | 3D区域| -4098 | xl3DArea |
| 3DAREA | 3D堆叠区域| 78 | xl3DAreaStacked |
| 3DAREA | 3D 100%堆积面积| 79 | xl3DAreaStacked100 |
| 3DBAR | 3D群集酒吧| 60 | xl3DBarClustered |
| 3DBAR | 3D STACKED BAR | 61 | xl3DBarStacked |
| 3DBAR | 3D 100%叠条| 62 | xl3DBarStacked100 |
| 3DCOLUMN | 3D群集列| 54 | xl3DColumnClustered |
| 3DCOLUMN | 3D栏| -4100 | xl3DColumn |
| 3DCOLUMN | 3D圆锥柱| 105 | xlConeCol |
| 3DCOLUMN | 3D圆柱柱| 98 | xlCylinderCol |
| 3DCOLUMN | 3D金字塔柱| 112 | xlPyramidCol |
| 3DCOLUMN | 3D堆叠柱| 55 | xl3DColumnStacked |
| 3DCOLUMN | 3D 100%堆叠柱| 56 | xl3DColumnStacked100 |
|区域区域1 | xlArea |
|区域堆积面积| 76 | xlAreaStacked |
|区域100%堆积面积| 77 | xlAreaStacked100 |
|酒吧|集群酒吧| 57 | xlBarClustered |
|酒吧|堆叠的酒吧| 58 | xlBarStacked |
|酒吧| 100%堆叠的酒吧| 59 | xlBarStacked100 |
|泡泡| 3D气泡,带3D效果的气泡| 87 | xlBubble3DEffect |
|泡泡|泡泡| 15 | xlBubble |
|栏|丛集栏| 51 | xlColumnClustered |
|栏|堆叠柱| 52 | xlColumnStacked |
|栏| 100%叠层柱| 53 | xlColumnStacked100 |
|锥体群集圆锥柱| 99 | xlConeColClustered |
|锥体叠锥柱| 100 | xlConeColStacked |
|锥体100%叠锥塔| 101 | xlConeColStacked100 |
| CONEBAR |簇状锥形棒| 102 | xlConeBarClustered |
| CONEBAR |叠锥棒| 103 | xlConeBarStacked |
| CONEBAR | 100%叠锥酒吧| 104 | xlConeBarStacked100 |
|气缸|集群圆柱列| 92 | xlCylinderColClustered |
|气缸|叠缸柱| 93 | xlCylinderColStacked |
|气缸| 100%叠层圆柱柱| 94 | xlCylinderColStacked100 |
|圆柱|簇状圆柱棒| 95 | xlCylinderBarClustered |
|圆柱|叠层圆柱棒| 96 | xlCylinderBarStacked |
|圆柱| 100%叠层圆柱棒| 97 | xlCylinderBarStacked100 |
|甜甜圈|甜甜圈| -4120 | xlDoughnut |
|甜甜圈|炸面包圈| 80 | xlDoughnutExploded |
| LINE | 3D线| -4101 | xl3DLine |
| LINE | LINE | 4 | xlLine |
| LINE |标记线| 65 | xlLineMarkers |
| LINE |叠线| 63 | xlLineStacked |
| LINE | 100%叠线| 64 | xlLineStacked100 |
| LINE |带标记的叠线| 66 | xlLineMarkersStacked |
| LINE | 100%带标记的叠线| 67 | xlLineMarkersStacked100 |
| PIE | 3D PIE | -4102 | xl3DPie |
| PIE | 3D爆炸饼| 70 | xl3DPieExploded |
| PIE |派| 71 | xlBarOfPie |
| PIE |爆炸饼| 69 | xlPieExploded |
| PIE | PIE | 5 | xlPie |
| PIE | PIE OF PIE | 68 | xlPieOfPie |
|金字塔丛集的金字塔| 109 | xlPyramidBarClustered |
|金字塔金字塔棒| 110 | xlPyramidBarStacked |
|金字塔100%叠层金字塔棒| 111 | xlPyramidBarStacked100 |
|金字塔丛集的金字塔栏| 106 | xlPyramidColClustered |
|金字塔金字塔堆积塔| 107 | xlPyramidColStacked |
|金字塔100%堆叠金字塔形柱| 108 | xlPyramidColStacked100 |
|雷达|雷达| -4151 | xlRadar |
|雷达|填充雷达| 82 | xlRadarFilled |
|雷达|带有数据标记的雷达| 81 | xlRadarMarkers |
|散射|散射| -4169 | xlXYScatter |
|散射|线条散射| 74 | xlXYScatterLines |
|散射|带有行且没有数据标记的散射器| 75 | xlXYScatterLinesNoMarkers |
|散射|线条流畅的散布| 72 | xlXYScatterSmooth |
|散射|带有平滑线且无数据标记的散射器| 73 | xlXYScatterSmoothNoMarkers |
|库存股票HLC(高低关)| 88 | xlStockHLC |
|库存股票OHLC(开-高-低-闭) 89 | xlStockOHLC |
|库存股票VHLC(VOLUME-HIGH-LOW-CLOSE)| 90 | xlStockVHLC |
|库存库存量(音量开-高-低-闭)| 91 | xlStockVOHLC |
|表面| 3D表面| 83 | xlSurface |
|表面| 3D曲面线| 84 | xlSurfaceWireframe |
|表面|表面顶视图| 85 | xlSurfaceTopView |
|表面|顶视图线框| 86 | xlSurfaceTopViewWireframe |


高温超导

关于excel - 使用VBA的Excel图表的主题图表样式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38813522/

10-17 00:35