2013-01-13 66 views
3

我有一個折線圖,我試圖通過VBA在給定的Y值處添加一條水平線。我正在關注this guide,它建議在現有圖表中添加一行,然後將其類型更改爲散點圖,這會導致Excel將該系列自動放置在輔助X軸上。它可以進一步格式化。使用VBA在輔助X軸上放置圖表系列

我的問題是,當用VBA這樣做時,我不明白如何將一條線切換到輔助X軸上。默認情況下,所有新行將在主X軸上。

例如,假設chrt是一個圖表對象:

' Enable secondary X axis (I think) 
chrt.HasAxis(XlAxisType.xlCategory, XlAxisGroup.xlSecondary) = True 

Dim se As Series 
Set se = chrt.SeriesCollection.NewSeries 
se.ChartType = xlXYScatterLinesNoMarkers 

' Add a line at Y = 0 
se.xValues = Array(0, 1) 
se.values = Array(0, 0) 

現在,如何獲得se到次級X軸?

+0

您使用的是什麼版本的Excel?你可以嘗試下面的答案和評論。下面的代碼只是讓這條線有次軸。所以我假設你的代碼中的其他部分都沒問題,這裏沒有顯示。 – bonCodigo

+0

你必須爲AxisGroup xlSecondary分配至少一個系列。 Excel可能會自動添加輔助軸或座標軸;通常它會添加輔助數值軸並且通常不會添加輔助類別軸。 –

回答

8

我跟着這link for Excel 2003並記錄了一個宏。請注意,對於Excel 2007圖表來說,錄製宏有這樣的不幸情況。但你在Excel 2010中再次幸運。所以,如果你打算根據宏來做它,然後複製代碼,那麼注意你的版本...

根據你的改變表單和圖表名稱。

With Sheets(3).ChartObjects("Chart 1") 
    .SeriesCollection(2).AxisGroup = xlSecondary 
    .HasAxis(xlCategory, xlPrimary) = True 
    .HasAxis(xlCategory, xlSecondary) = True 
    .HasAxis(xlValue, xlPrimary) = True 
    .HasAxis(xlValue, xlSecondary) = True 
    .Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic 
    .Axes(xlCategory, xlSecondary).CategoryType = xlAutomatic 
    End With 
+3

感謝@bonCodigo,在Excel 2010上工作。我嘗試了一下代碼,看起來關鍵部分是首先創建系列,設置AxisGroup = 2,然後運行HasAxis(XlAxisType.xlCategory,XlAxisGroup.xlSecondary )=真。 – Abiel

+0

@Abiel我很高興你得到它的工作:D感謝分享您的版本。它也可以幫助我。精確地說,你在評論中得到了它。 – bonCodigo

+2

+ 1好一個:) –