gpt4 book ai didi

vba - 检查 VBA 中是否存在趋势线

转载 作者:行者123 更新时间:2023-12-04 21:47:50 27 4
gpt4 key购买 nike

我有一张带有图表的工作表。我需要插入一个按钮来打开/关闭趋势线。所以首先,我需要检查趋势线是否存在。听起来很简单,但让我发疯!!!

这是我用来创建 trdnline 并对其进行格式化的代码:

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

为了检查趋势线是否存在,我尝试过:
If Sheets("Sheet 1").ChartObjects(1).SeriesCollections(1).Trendlines(1).Count = 1 Then
[Statement]
End If

但是测试失败。

我究竟做错了什么?什么是不脏的方法呢?

谢谢,

最佳答案

您的 If 存在三点问题陈述。如果你把你的陈述分解成更小的部分并分别测试它们,你会发现:

  • 它是 Sheet1 ,不是 Sheet 1 .没有空间。这就是导致“下标超出范围”错误的原因。
  • SeriesCollection属性适用于 Chart对象,而不是 ChartObject目的。是的,我知道这个愚蠢的 Excel 术语令人困惑。 Anyhoo,您需要ChartObjects(1).Chart.SeriesCollection(1) ,不是 ChartObjects(1).SeriesCollection(1) .
  • Trendlines(1)返回 Trendline对象,不是 Count有能力的。您想计算趋势线集合中的项,即 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

    注意:这仅在趋势线计数正好为 1 时才有效。考虑更换 =>=如果可能不止一个。

    关于vba - 检查 VBA 中是否存在趋势线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10386537/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com