2011-08-16 51 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

相關問題