将一系列趋势线方程转换为形状文本框

dwi*_*ony 7 excel vba excel-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
Run Code Online (Sandbox Code Playgroud)

请注意,这slopetextboxes是一个包含~6个形状文本框名称的数组.

据我所知,没有办法获取趋势线数据标签而无法停止显示它.我先尝试将它存放在一个字符串中DoEvents,然后Application.ScreenUpdating重新打开,一切都无济于事.我在这里难过.

编辑:看来,通过放置DoEvents.DisplayEquation = True我能有一些我的形状填充正确,但不是全部.仍然似乎是某种运行时问题.

BOUNTY EDIT:我已经开始用数据本身的公式抓住斜坡,但我仍然不明白为什么我不能.DataLabel.Text在运行期间抓住图表.我可以在踩踏时抓住它,而不是在运行时.看起来只是采用PREVIOUS系列斜率并将其放置在形状中(或者单元格,它甚至不在目的地的哪个位置).DoEvents放置在不同的位置会产生不同的结果,因此必须要有所作为.

dwi*_*ony 0

我已将其作为错误注销 - BrakNicku 发现了唯一的解决方法,即在读取其属性Select之前:DataLabelText

srs.Trendlines(1).DataLabel.Select

这不是一个足够的解决方案(因为这可能会在运行时导致一些问题),但却是唯一有效的解决方案。