【发布时间】:2020-10-28 18:27:48
【问题描述】:
我正在尝试从活动图表中的每条趋势线构建斜率collection。使用 F8 单步执行脚本时,我可以提取趋势线方程,但是当我删除断点并使用 F5 运行时,s.Trendlines(1).DataLabel.Text 只会返回一个空字符串到strEquations。这是一个非常可重复的错误,我可以单步执行所有序列并提取所有方程,或者单步执行第一个趋势线,然后运行其余部分,脚本将在第二个趋势线上中断,Run-time error 9. Subscript out of range 在行 afterEquals = Split(upToX(0), " ")。
这是我在活动图表上运行的脚本:
ThemeColor = 5 'msoThemeColorAccent enumeration starts at 5
Set trendEqns = New Collection
For Each s In ActiveChart.SeriesCollection
'Debug.Print s.Name 'debug print which series 's' is being manipulated
s.Trendlines.Add 'adds a trendline to series (s)
s.Trendlines(1).Select
s.Trendlines(1).DisplayEquation = True 'displays the equation for each new trendline
s.Trendlines(1).DataLabel.Format.TextFrame2.TextRange.Font.Fill.ForeColor.ObjectThemeColor = ThemeColor
'THIS WORKS WHEN STEPPING THROUGH, but NOT RUNNING???
strEquation = s.Trendlines(1).DataLabel.Text 'strEquation = "y = m*x + b"
upToX = Split(strEquation, "x") 'upToX = "y = m"
afterEquals = Split(upToX(0), " ") 'afterEquals = "m"
Slope = afterEquals(2) 'Slope = "m"
'Debug.Print Slope
trendEqns.Add Slope
ThemeColor = ThemeColor + 1
Next s
【问题讨论】:
-
我讨厌 VBA。有很多次我在运行时遇到问题,但单步执行会产生预期的结果。正如 Tim 所说,有时它需要“赶上”,我什至使用 sleep 在某些函数的每个循环之间等待 x 秒,以试图避免这种情况发生。
标签: vba