Я закончил тем, что получил это
Private Sub UpdateAnalytics()
Dim CategoryPreview As Range
Dim ChartValues As String 'Stored as String instead of variant
Dim ChartXValues As String 'Stored as String instead of variant
Dim Cht As Chart
Dim Srs As Series
With Sheets("Analytics")
Set CategoryPreview = .Range(.Range("A1"), .Range("A1").End(xlDown)).Find("Page 4", LookIn:=xlValues) '<~~ add period .Range(. range("a1'
If 1 <> 1 Then
CategoryPreview.Resize(1, 3).Insert Shift:=xlDown
CategoryPreview.Resize(1, 3).Copy Destination:=CategoryPreview.Offset(-1, 0)
CategoryPreview.Offset(-1, 0) = 1
CategoryPreview.Offset(-1, 1) = 1
ElseIf 1 = 1 Then
CategoryPreview.Offset(1, 0).Resize(1, 3).Insert Shift:=xlDown
CategoryPreview.Resize(1, 3).Copy Destination:=CategoryPreview.Offset(1, 0)
CategoryPreview.Offset(1, 0) = 2
CategoryPreview.Offset(1, 1) = 2
End If
.Range("AnnualSpent") = "=SUM(" & Range(.Range("B1"), .Range("B1").End(xlDown)).Address & ")"
'Add new tab to the pie chart
ChartXValues = .Range(.Range("A1"), .Range("A1").End(xlDown)).Address 'add period, captured address for a dynamic chart
ChartValues = .Range(.Range("B1"), .Range("B1").End(xlDown)).Address 'add period, captured address for a dynamic chart
Set Cht = .ChartObjects("AnalyticsChart").Chart
Set Srs = Cht.SeriesCollection(1)
Srs.Formula = "=SERIES(,Analytics!" & ChartXValues & ",Analytics!" & ChartValues & ",1)" 'Updated chart via the formula
End With
End Sub
Хотя я не совсем понимаю, что мне нужно было хранить переменные Cht и Srs, иначе это не сработало бы. Почему хранение диаграммы и серии отличается от использования следующего?
.ChartObjects("AnalyticsChart").SeriesCollection(1).Formula = "=SERIES(,Analytics!" & ChartXValues & ",Analytics!" & ChartValues & ",1)"