有什么方法可以通过VBA调整Excel图表中LegendEntries(系列)的顺序吗?
Is there any way to adjust the sequence of LegendEntries (Series) in Excel chart by VBA?
我正在研究 Excel 图表自动化。当我尝试向上移动一个 LegendEntry(Series) 对象时,我无法从 MS site 中找到任何相关的 API 方法。手动方式是这样的:Select图表>右击>Select数据...>选择LegendEntry > 单击按钮 上移 。 VBA 我怎么能做到这一点?提前谢谢你。
图例条目顺序与系列顺序相同。我不确定这是否甚至暴露在对象模型中。您可以更改系列公式的最后一个参数的编号,以对系列和图例条目重新排序。
ActiveSheet.ChartObjects("Chart 1").Activate
Debug.Print ActiveChart.FullSeriesCollection(1).Formula
这会给你类似的东西
=SERIES(Sheet1!$B,,Sheet1!$C,1)
作为最后一个参数的 1
表示它是图表中的第一个系列,因此是图例中的第一个系列。更改该参数以将图例条目移动到不同的位置。
这是另一种方式
Sub Sample()
Dim ws As Worksheet
Dim objChrt As ChartObject
Dim chrt As Chart
Set ws = ActiveSheet
Set objchart = ws.ChartObjects(1)
Set chrt = objchart.Chart
chrt.FullSeriesCollection(2).PlotOrder = 1
End Sub
截图
我正在研究 Excel 图表自动化。当我尝试向上移动一个 LegendEntry(Series) 对象时,我无法从 MS site 中找到任何相关的 API 方法。手动方式是这样的:Select图表>右击>Select数据...>选择LegendEntry > 单击按钮 上移 。 VBA 我怎么能做到这一点?提前谢谢你。
图例条目顺序与系列顺序相同。我不确定这是否甚至暴露在对象模型中。您可以更改系列公式的最后一个参数的编号,以对系列和图例条目重新排序。
ActiveSheet.ChartObjects("Chart 1").Activate
Debug.Print ActiveChart.FullSeriesCollection(1).Formula
这会给你类似的东西
=SERIES(Sheet1!$B,,Sheet1!$C,1)
作为最后一个参数的 1
表示它是图表中的第一个系列,因此是图例中的第一个系列。更改该参数以将图例条目移动到不同的位置。
这是另一种方式
Sub Sample()
Dim ws As Worksheet
Dim objChrt As ChartObject
Dim chrt As Chart
Set ws = ActiveSheet
Set objchart = ws.ChartObjects(1)
Set chrt = objchart.Chart
chrt.FullSeriesCollection(2).PlotOrder = 1
End Sub
截图