使用VBA将图表系列放在辅X轴上

Abi*_*iel 4 excel vba excel-vba

我有一个折线图,我试图通过VBA添加给定Y值的水平线.我正在遵循本指南,建议在现有图表中添加一行,然后将其类型更改为分散,这会导致Excel自动将系列放在辅X轴上.然后可以进一步格式化它.

我的问题是,当使用VBA执行此操作时,我不明白如何将线切换到辅助X轴.默认情况下,所有新行都将在主X轴上.

例如,假设chrt是Chart对象:

' 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)
Run Code Online (Sandbox Code Playgroud)

现在,如何se进入辅X轴?

bon*_*igo 10

我按照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
Run Code Online (Sandbox Code Playgroud)

  • 感谢@bonCodigo,它适用于Excel 2010.我对代码进行了一些实验,看起来关键部分是首先创建系列,设置AxisGroup = 2,然后运行HasAxis(XlAxisType.xlCategory,XlAxisGroup.xlSecondary) =真. (3认同)
  • + 1好一个:) (2认同)
  • +1谢谢你拿起丢球(我删除了之前的建议) (2认同)