有什么方法可以通过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

截图