在VBA代码中使用If函数来格式化图表

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

我正在处理一个macros,它将自动格式化我创build的大量图表。 然而,我遇到了一个问题,那就是每个图表所包含的系列数量各不相同。

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

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

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

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

 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,它应该工作。 在一个侧面说明,这可能不是最有效的方式来编码,因为你正在重复代码块,但这不是真正的问题点。