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