尝试更新图表系列公式时不匹配

Mismatch on trying to update chart series formula

我不明白为什么我在尝试更新饼图时出现不匹配。下面是一个测试片段。特别是最后一个陈述的问题,试图更新图表的系列公式。我已经尝试了几种方法,但每次使用范围更新图表时都会出现不匹配的情况。

Private Sub UpdateAnalytics()

Dim CategoryPreview As Range
Dim ChartValues As Variant
Dim ChartXValues As Variant

    With Sheets("Analytics")
    Set CategoryPreview = Range(.Range("A1"), .Range("A1").End(xlDown)).Find("Page 4", LookIn:=xlValues)
    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))
    ChartValues = Range(.Range("B1"), .Range("B1").End(xlDown))

    .ChartObjects("AnalyticsChart").Activate


       ActiveChart.FullSeriesCollection(1).Select
       Selection.Formula = "=SERIES(,Analytics!" & ChartXValues & ",Analytics!" & ChartValues & ",1)"    <<<<< Mismatch happens here
    End With

End Sub

尝试

Private Sub UpdateAnalytics()

    Dim CategoryPreview As Range
    Dim ChartValues As Variant
    Dim ChartXValues As 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)) ' add period
            ChartValues = .Range(.Range("B1"), .Range("B1").End(xlDown)) 'add period

            '.ChartObjects("AnalyticsChart").Activate

            Set Cht = .ChartObjects("AnalyticsChart").Chart
            Set Srs = Cht.SeriesCollection(1)
            With Srs
                .XValues = ChartXValues
                .Values = ChartValues
            End With
           'Selection.Formula = "=SERIES(,Analytics!" & ChartXValues & ",Analytics!" & ChartValues & ",1)"    <<<<< Mismatch happens here
        End With

End Sub

我最终得到了它

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)"