2013-01-13 63 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好一个:) –