【问题标题】:Themed Chart Styles for Excel charts using VBA使用 VBA 的 Excel 图表的主题图表样式
【发布时间】:2016-12-13 07:16:10
【问题描述】:

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

ActiveChart.ClearToMatchStyle
ActiveChart.ChartStyle = 268

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

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

编辑:

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

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

View the workbook here

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

一个月的比赛 1月42日 2 月 53 日 77 年 3 月 124 年 4 月 198 年 5 月 288 年 6 月 312 年 7 月 303 年 8 月 264 年 9 月 149 年 10 月 11 月 54 日 12 月 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

【问题讨论】:

  • @Robin Mackenzie... 怀疑我曾经发现给定标题是 AddChart2 VBA 宏中的数字代表什么?,提供可能答案的链接现在是一个电子付费预订
  • 当然,没有标记为欺骗 - 只是为了将问题联系在一起而放入链接。这是同一个常数。
  • @Robin Mackenzie..谢谢..仍然找到关于这个主题的最少信息......但是我使用饼图构建了一个包含所有图表样式的示例工作簿,并且我已经编辑了帖子以包括一个指向它的链接,这样每个人都可以直观地了解每种样式的外观。

标签: vba excel charts


【解决方案1】:

进一步评论MSDN

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

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

创建一个 Excel 工作簿,如下所示 - 请注意,我已经添加了一个图表,以便 ws.ChartObjects(1) 可以引用一些内容:

运行此代码 - 您可以使用Stops 来更详细地查看发生了什么。

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 | xl3DA 区域 | | 3DAREA | 3D 堆叠区域 | 78 | xl3DAreaStacked | | 3DAREA | 3D 100% 堆叠区域 | 79 | xl3DAreaStacked100 | | 3DBAR | 3D 聚集酒吧 | 60 | xl3DBarClustered | | 3DBAR | 3D堆叠条| 61 | xl3DBarStacked | | 3DBAR | 3D 100% 堆叠条 | 62 | xl3DBarStacked100 | | 3D列 | 3D 聚集柱 | 54 | xl3DColumnClustered | | 3D列 | 3D 专栏 | -4100 | xl3D列 | | 3D列 | 3D锥柱 | 105 | xlConeCol | | 3D列 | 3D圆柱体| 98 | xlCylinderCol | | 3D列 | 3D 金字塔柱 | 112 | xlPyramidCol | | 3D列 | 3D 堆叠柱 | 55 | xl3DColumnStacked | | 3D列 | 3D 100% 堆叠柱 | 56 | xl3DColumnStacked100 | |面积 |面积 | 1 | xl面积 | |面积 |堆积面积 | 76 | xlAreaStacked | |面积 | 100% 堆叠面积 | 77 | xlAreaStacked100 | |酒吧 |聚集酒吧 | 57 | xlBar 集群 | |酒吧 |堆叠条 | 58 | xlBarStacked | |酒吧 | 100% 堆叠条 | 59 | xlBarStacked100 | |泡泡 | 3D 泡泡,带 3D 效果的泡泡 | 87 | xlBubble3DEffect | |泡泡 |泡泡 | 15 | xl泡泡 | |专栏 |聚集列 | 51 | xlColumnClustered | |专栏 |堆积柱 | 52 | xlColumnStacked | |专栏 | 100% 堆叠柱 | 53 | xlColumnStacked100 | |锥 |聚簇锥柱 | 99 | xlConeColClustered | |锥 |堆叠锥柱 | 100 | xlConeColStacked | |锥 | 100% 堆叠锥柱 | 101 | xlConeColStacked100 | |锥杆 |聚集锥杆 | 102 | xlConeBarClustered | |锥杆 |堆叠锥杆 | 103 | xlConeBarStacked | |锥杆 | 100% 堆叠锥杆 | 104 | xlConeBarStacked100 | |气缸 |集束圆柱 | 92 | xlCylinderColClustered | |气缸 |叠层圆柱 | 93 | xlCylinderColStacked | |气缸 | 100% 堆叠圆柱 | 94 | xlCylinderColStacked100 | |气缸 |集束柱杆 | 95 | xlCylinderBarClustered | |气缸 |堆叠圆柱棒 | 96 | xlCylinderBarStacked | |气缸 | 100% 堆叠圆柱棒 | 97 | xlCylinderBarStacked100 | |甜甜圈 |甜甜圈 | -4120 | xl甜甜圈 | |甜甜圈 |炸甜甜圈 | 80 | xlDoughnut爆炸 | |线 | 3D线| -4101 | xl3D线 | |线 |线 | 4 | xl线 | |线 |标记线 | 65 | xlLineMarkers | |线 |堆叠线 | 63 | xlLineStacked | |线 | 100% 堆叠线 | 64 | xlLineStacked100 | |线 |带标记的堆叠线 | 66 | xlLineMarkersStacked | |线 | 100% 带标记的堆叠线 | 67 | xlLineMarkersStacked100 | |馅饼 | 3D 饼图 | -4102 | xl3DPie | |馅饼 | 3D 爆炸派 | 70 | xl3DPie 爆炸 | |馅饼 |馅饼饼 | 71 | xlBarOfPie | |馅饼 |爆炸馅饼 | 69 | xlPie爆炸 | |馅饼 |馅饼 | 5 |大饼 | |馅饼 |馅饼68 | xlPieOfPie | |金字塔 |集群金字塔酒吧 | 109 | xlPyramidBarClustered | |金字塔 |堆叠的金字塔酒吧 | 110 | xlPyramidBarStacked | |金字塔 | 100% 堆叠金字塔酒吧 | 111 | xlPyramidBarStacked100 | |金字塔 |聚簇金字塔 | 106 | xlPyramidColClustered | |金字塔 |堆叠金字塔 | 107 | xlPyramidColStacked | |金字塔 | 100% 堆叠金字塔 | 108 | xlPyramidColStacked100 | |雷达 |雷达 | -4151 | xl雷达 | |雷达 |填充雷达 | 82 | xlRadarFilled | |雷达 |带有数据标记的雷达| 81 | xlRadarMarkers | |分散 |分散 | -4169 | xlXY散射 | |分散 |用线条散布 | 74 | xlXYScatterLines | |分散 |有线条且无数据标记的散点图 | 75 | xlXYScatterLinesNoMarkers | |分散 |线条流畅的散点图 | 72 | xlXYScatterSmooth | |分散 |线条流畅且无数据标记的散点图 | 73 | xlXYScatterSmoothNoMarkers | |库存 |股票 HLC (高-低-收) | 88 | xlStockHLC | |库存 |股票 OHLC (开-高-低-收) | 89 | xlStockOHLC | |库存 |股票VHLC(成交量-高-低-收)| 90 | xlStockVHLC | |库存 | STOCK VOHLC(成交量-开-高-低-收)| 91 | xlStockVOHLC | |表面 | 3D表面| 83 | xl表面 | |表面 | 3D表面线框| 84 | xlSurfaceWireframe | |表面 |表面顶视图 | 85 | xlSurfaceTopView | |表面 |表面顶视图线框 | 86 | xlSurfaceTopViewWireframe |

HTH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多