Ala*_*any 4 vba exists object trendline
我有一张带有图表的表格.我需要插入一个按钮来打开/关闭Trendline.首先,我需要检查趋势线是否存在.听起来很简单,但正在推动我坚果!
这是我用来创建trednline并对其进行格式化的代码:
Sub Trending()
Sheets("Sheet1").ChartObjects(1).Activate
ActiveChart.SeriesCollection(1).Trendlines.Add
ActiveChart.SeriesCollection(1).Trendlines(1).Select
With Selection
.Type = xlPolynomial
.Order = 3
.Border.ColorIndex = 3
.Border.Weight = xlMedium
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
为了检查趋势线的存在,我试过:
If Sheets("Sheet 1").ChartObjects(1).SeriesCollections(1).Trendlines(1).Count = 1 Then
[Statement]
End If
Run Code Online (Sandbox Code Playgroud)
但测试失败了.
我究竟做错了什么?什么是非脏的方式呢?
谢谢,Al
你的If陈述有三个问题.如果你用较小的位分解你的陈述并分别测试它们,你会发现:
Sheet1,不是Sheet 1.没有空间.这是导致"下标超出范围"错误的原因.SeriesCollection属性适用于Chart对象,而不是ChartObject对象.是的,我知道这个愚蠢的Excel术语令人困惑.Anyhoo,你需要ChartObjects(1).Chart.SeriesCollection(1),不是ChartObjects(1).SeriesCollection(1).Trendlines(1)返回一个Trendline无法使用的对象Count.您想要计算trendlines集合中的项目,即Trendlines.Count不计算Trendlines(1).Count.总结一下,这是如何写它:
If Sheets("Sheet1").ChartObjects(1).Chart _
.SeriesCollection(1).Trendlines.Count > 1 Then
MsgBox "there is exactly one trendline"
End If
Run Code Online (Sandbox Code Playgroud)
注意:这仅在趋势线计数恰好为1时才有效.考虑更换=与>=是否有可能不止一个.