在VBA中创建具有2种不同类型的图表

时间:2011-08-16 18:26:34

标签: excel vba excel-vba

这可能是一个基本问题,但我一直很难为我的问题找到一个好的解决方案。

我正在尝试在VBA中以编程方式创建图表。该图表需要有3个系列,其中2个系列为xlColumnStacked,1个系列为xlColumnClustered。我们的想法是让1个系列属于xlColumnClustered类型,而另外两个是堆叠的。这将导致两列的并排比较。

这可能吗?

我尝试更改每个系列类型,但结果是整个图表类型将根据更改的最后一个系列进行更改。 (例如 - >添加的最后一个系列是xlStacked,所有三个系列都是堆叠的)

我正在使用Excel 2007和嵌入式VBA宏编辑器。

2 个答案:

答案 0 :(得分:0)

您可以通过用户界面手动执行此操作吗?您在代码中执行的操作在逻辑上与在UI中执行的操作相同吗?使用UI,您需要选择要更改其类型的特定系列。你是在代码中这样做而不是设置整个图表的类型吗?

对于与Excel图表有关的任何内容,我建议John Peltier's site

答案 1 :(得分:0)

感谢Stackoverflow的贡献者。我找到了不同的部分(答案)并将它们放在一起。我有两个系列,试图把不同类型的图表放在同一个图表上。

    Set Chrt = ws.Shapes.AddChart.Chart
    Set s1 = Chrt.SeriesCollection.NewSeries
    Set s2 = Chrt.SeriesCollection.NewSeries
    With Chrt
        .'this part chart part'
    End With
    With s1
        .ChartType = xlColumnClustered
        .Values = ActiveSheet.Range("c3:c24")
        .XValues = ActiveSheet.Range("b3:b24")
        .HasDataLabels = True
        .AxisGroup = xlPrimary
    End With
    With s2
        .ChartType = xlLineStacked
        .AxisGroup = xlSecondary
        .Values = ActiveSheet.Range("d3:d24")
        .XValues = ActiveSheet.Range("b3:b24")
        .HasDataLabels = True
    End With

这是我的解决方案而且有效。附:我正在使用excel 2007