Уравнение не генерируется для графика в Excel 2016, но работает для Excel 2010 - PullRequest
1 голос
/ 20 февраля 2020

У меня есть макрос, который строит график и записывает уравнение сбоку (см. Рисунок ниже), коды следующие:

Sub PopulateData(CurrentChart As Chart, SiteNames As Range)

Dim DataCount As Integer
Dim Dataindex As Integer
Dim LastRow As Integer
Dim DataColLet As String
Dim LastLegend As Integer
Dim SeriesCount As Integer

LastRow = ActiveSheet.Cells(2, 1).End(xlDown).Row
DataCount = SiteNames.Count
SeriesCount = 1

With CurrentChart

    'Going through each Data Set
    For i = 2 To DataCount

        If SiteNames(i).Font.Strikethrough = False Then
            'Gets the data column letter
            DataColLet = ToColletter(ActiveSheet.Rows(2).Find(What:=SiteNames(i), LookIn:=xlValues).Column)

            'Create a series to load the data
            .SeriesCollection.NewSeries
            .ChartArea.Font.Size = 14

            On Error Resume Next

            With .SeriesCollection(SeriesCount)

                'Load the data
                .XValues = "=" & ActiveSheet.Name & "!$A$3:$A$" & LastRow
                .Values = "=" & ActiveSheet.Name & "!$" & DataColLet & "$3:$" & DataColLet & "$" & LastRow

                'Add the trend line
                .Trendlines.Add
                .Trendlines(1).Type = xlPower
                .Trendlines(1).DisplayEquation = True
                'Formats the points and trendline
                .Trendlines(1).DataLabel.Font.ColorIndex = i + 7
                .Trendlines(1).Border.ColorIndex = i + 7
                .MarkerStyle = 8
                .MarkerBackgroundColorIndex = i + 7
                .MarkerForegroundColorIndex = i + 7
                Application.Wait (Now + TimeValue("00:00:01") / 1000)
                ActiveSheet.Cells(SiteNames(i).Row, 1) = ActiveSheet.Cells(SiteNames(i).Row, 1) & " " & .Trendlines(1).DataLabel.Text
                .Trendlines(1).DataLabel.Delete
                .Name = "=" & ActiveSheet.Name & "!$A$" & SiteNames(i).Row

            End With

            LastLegend = .Legend.LegendEntries.Count
            .Legend.LegendEntries(LastLegend).Delete
            SeriesCount = SeriesCount + 1

        End If

    Next

End With

End Sub

Ниже приведен график с уравнением, сгенерированным после выполнения macro.

График с уравнением enter image description here

Однако, если запустить тот же код в Excel 2016, уравнение не будет сгенерировано в моем файле. Ниже приведен график без сгенерированного уравнения.

График без уравнения enter image description here

Следовательно, я могу знать, какой код необходимо настроить так, чтобы уравнение могло быть сгенерировано на Excel 2016? Следующий код .Trendlines(1).DisplayEquation = True уже введен, поэтому я могу знать, в чем заключается проблема с тем, что уравнение не генерируется? Спасибо.

...