У меня есть функция VBA, которая выводит уравнение линии тренда из диаграммы в ActiveSheet
.Я использую эту функцию в качестве надстройки на нескольких листах, хотя.Чтобы получить функцию для вычисления, когда я впервые открываю книгу, я нажимаю CTRL-ALT-F9.Когда я делаю это, функция вычисляет для ActiveSheet
, следовательно, если я использовал функцию на нескольких листах, она выполняет вычисление для любого активного листа, а не для листа, на котором расположена функция.В идеале я хочу, чтобы функция ссылалась на тот лист, в котором она находится, для этого отдельного экземпляра.Поскольку это должно быть широко применимо к нескольким листам, я хочу избежать вызова конкретного имени листа.
Текущая ссылка: ActiveSheet.ChartObjects(1).Chart
Я пробовал Worksheet.ChartObjects(1).Chart
, но это не скомпилировалось.
Спасибо за любую помощь / руководство.
Полный код:
Function TrendLineValue(x) As Double
Dim c As Chart
Dim t As Trendline
Dim e As String
' Get the trend line object for activesheet
Set c = ActiveSheet.ChartObjects(1).Chart
Set t = c.SeriesCollection(1).Trendlines(1)
' Display Equation
t.DisplayRSquared = False
t.DisplayEquation = True
'Number format for accuracy
t.DataLabel.NumberFormat = "0.0000E+00"
' Get equation
e = t.DataLabel.Text
' Create equation for use in cell
e = Replace(e, "y =", "")
e = Replace(e, "x6", "x^6")
e = Replace(e, "x5", "x^5")
e = Replace(e, "x4", "x^4")
e = Replace(e, "x3", "x^3")
e = Replace(e, "x2", "x^2")
e = Replace(e, "x", " * " & x & " ")
' Evaluate
TrendLineValue = Evaluate(e)
End Function