vba - 将系列趋势线方程获取到形状文本框
问题描述
我试图从图表中的第一个系列中获取趋势线方程到放置在工作表其他位置的形状文本框 - 但是,当我逐行遍历代码时,我只能让文本框正确填充- 在运行时它没有效果:
For Each chtObj In ActiveSheet.ChartObjects
Set cht = chtObj.Chart
For Each srs In chtObj.Chart.SeriesCollection
srs.Trendlines(1).DisplayEquation = True 'Display the labels to get the value
ThisWorkbook.Worksheets("MyDataSheet").Shapes(slopetextboxes(k)).TextFrame.Characters.Text = srs.Trendlines(1).DataLabel.Text
srs.Trendlines(1).DisplayEquation = False 'Turn it back off
Exit For
Next srs
k = k + 1 ' for the slope textboxes
Next chtObj
请注意,这slopetextboxes
是一个包含 ~6 个形状文本框名称的数组。
据我所知,没有办法在不停止显示的情况下获取趋势线数据标签。我试过先将它存储在一个字符串中DoEvents
,然后Application.ScreenUpdating
重新打开,一切都无济于事。我被难住了。
编辑:似乎通过放置DoEvents
在.DisplayEquation = True
我能够正确填充我的一些形状,但不是全部。似乎仍然是某种运行时问题。
赏金编辑:我已经开始使用一个公式来抓取斜坡,并在数据本身中运行,但我仍然不明白为什么我无法.DataLabel.Text
在运行时抓取图表。我可以在单步执行时抓住它,而不是在运行时。它似乎只是采用 PREVIOUS 系列斜率并将其放置在形状中(或单元格,甚至目的地在哪里都没有关系)。DoEvents
放置在不同的位置会产生不同的结果,所以一定是发生了什么。
解决方案
更新以更好地理解错误。这适用于我在 excel 2016 中对源数据进行多次更改(因此斜率)
我试过 myChart.refresh - 没用。我尝试删除然后重新添加整个趋势线,也没有用。
这适用于除第一种情况之外的所有情况。第一种情况需要打两次。与 .select 相同
如果您尝试删除趋势线,即使在将其文本分配给文本框后,这也行不通
Option Explicit
Sub main()
Dim ws As Worksheet
Dim txtbox As OLEObject
Dim chartObject As chartObject
Dim myChart As chart
Dim myChartSeriesCol As SeriesCollection
Dim myChartSeries As Series
Dim myChartTrendLines As Trendlines
Dim myTrendLine As Trendline
Set ws = Sheets("MyDataSheet")
Set txtbox = ws.OLEObjects("TextBox1")
For Each chartObject In ws.ChartObjects
Set myChart = chartObject.chart
Set myChartSeriesCol = myChart.SeriesCollection
Set myChartSeries = myChartSeriesCol(1)
Set myChartTrendLines = myChartSeries.Trendlines
With myChartTrendLines
If .Count = 0 Then
.Add
End If
End With
Set myTrendLine = myChartTrendLines.Item(1)
With myTrendLine
.DisplayEquation = True
txtbox.Object.Text = .DataLabel.Text
End With
Next chartObject
End Sub
推荐阅读
- python - 无法在 Python 3.7 上安装 mysqlclient
- android - 无法在 Visual Studio 2019 中创建新的 android 模拟器
- react-native - 如何在反应本机导航(wix)中在顶部栏中的标题中传递自定义组件
- angular - 问题路线儿童的角度与简单的组件
- python - 当我在 python 中使用 print(file.read()) 时如何停止打印 .rtf 文件的属性
- kotlin - Comparable 和运算符 compareTo 有什么区别?
- mysql - 在 SQL 中覆盖行
- javascript - 循环中断时整个程序暂停
- java - 无法解析 Fragment RecyclerView 中的“findViewById”方法
- java - 在java中查看数字的不同或相同数字