2011-08-16 49 views
1

这可能是一个基本问题,但我一直很难找到解决我的问题的好方法。用2种不同的类型在VBA中创建图表

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

这可能吗?

我试着改变每个系列类型,但结果是整个图表类型将根据最后一个被更改的系列改变。 (例如 - > Last series added is xlStacked,all three series are stacked)

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

回答

0

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

对于任何与Excel图表,我会建议John Peltier's site

+0

我实际上无法通过用户界面(通过UI假设你的意思是使用EXCEL)。如果您有三个系列图表,请选择一个系列,在这种情况下更改类型将会更改整个图表。 (EG我有一个全部三个堆栈,并希望在一个单独的列中有一个系列,所以我将该系列作为一个群集列,现在所有三个系列都是聚簇列)。 编辑: 我在VBA代码中这样做,只是因为数据的动态性。 – user875230

+0

看着这个网站,Stacked Cluster图表非常接近我想要的。我不准备购买任何东西,但这告诉我它不是一个简单的解决方法。谢谢! – user875230

0

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

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

相关问题