0

我有一个我希望是一个相对简单的请求。

我正在研究一个宏,它将自动格式化我正在创建的大量图表。但是,我遇到了一个问题,因为每个图表包含的系列数量变化很大。

例如,如果我尝试在只有四个系列的图表上运行我当前的代码,它会在到达下面的代码时出错,并且此后无法处理代码,因为它期望格式化第五个系列。我相信我需要实现这样的代码 - “如果图表有第五个系列,那么应用宏的下一行”。

下面的代码是我用来格式化每个系列的代码。如上所述,这应该如何包含在 if 语句中?

ActiveChart.LegEND.Select
ActiveChart.LegEND.LegendEntries(5).Select
ActiveChart.SeriesCollection(5).Select
With Selection.Format.Line
    .Visible = msoTrue
    .Weight = 1.5
End With
4

1 回答 1

2

您可以使用集合的Count成员(文档),这将返回图表中的系列数。你可以使用类似的东西:SeriesCollection

ActiveChart.LegEND.Select

If ActiveChart.SeriesCollection.Count = 5 Then

    ActiveChart.LegEND.LegendEntries(5).Select
    ActiveChart.SeriesCollection(5).Select
    With Selection.Format.Line
         .Visible = msoTrue
         .Weight = 1.5
    End With
End If

这仅在您恰好有 5 个系列时才有效,如果您有更多的Count评估结果为 6,则上述格式将不适用。

您可以将 If 语句稍微更改为以下内容:

If ActiveChart.SeriesCollection.Count >= 5 Then

    ActiveChart.LegEND.LegendEntries(5).Select
    ActiveChart.SeriesCollection(5).Select
    With Selection.Format.Line
         .Visible = msoTrue
         .Weight = 1.5
    End With

End If

然后,您可以在代码中重复此块 >= 6,它应该可以工作。附带说明一下,这可能不是最有效的编码方式,因为您正在重复代码块,但这并不是这个问题的重点。

于 2012-08-02T09:10:36.023 回答