我有一张表用于动态调整图表。
为此我使用下面的代码,它按预期工作,但由于我是VBA的新手,我在这里创建一个循环很困难,所以我不必列出每个系列/类别。
总共有8个系列和17个类别。
- 系列过滤器(true / false)列在“B27:B34
”,
中
- 类别过滤器列在“C25:S25
”中,
所有在工作表(3)。
有人可以帮我这个吗?
我的代码(已缩短):
Sub UpdateChart()
Dim varSeries1 As String
Dim varSeries2 As String
Dim varSeries3 As String
' ...
Dim varCategory1 As String
Dim varCategory2 As String
Dim varCategory3 As String
' ...
varSeries1 = Worksheets(3).Cells(27, 1).Value
varSeries2 = Worksheets(3).Cells(28, 1).Value
varSeries3 = Worksheets(3).Cells(29, 1).Value
' ...
varCategory1 = Worksheets(3).Cells(25, 3).Value
varCategory2 = Worksheets(3).Cells(25, 4).Value
varCategory3 = Worksheets(3).Cells(25, 5).Value
' ...
Worksheets(3).ChartObjects("Chart 1").Activate
ActiveChart.FullSeriesCollection(1).IsFiltered = varSeries1
ActiveChart.FullSeriesCollection(2).IsFiltered = varSeries2
ActiveChart.FullSeriesCollection(3).IsFiltered = varSeries3
' ...
ActiveChart.ChartGroups(1).FullCategoryCollection(1).IsFiltered = varCategory1
ActiveChart.ChartGroups(1).FullCategoryCollection(2).IsFiltered = varCategory2
ActiveChart.ChartGroups(1).FullCategoryCollection(3).IsFiltered = varCategory3
' ...
答案 0 :(得分:1)
使用数组:
Sub UpdateChart()
Dim arrSeries() As Boolean
Dim arrCategory() As Boolean
Dim i As Integer
arrSeries = Worksheets(3).Range("B27:B34").Value
arrCategory = Worksheets(3).Range("C25:S25").Value
Worksheets(3).ChartObjects("Chart 1").Activate
For i = LBound(arrSeries, 1) To UBound(arrSeries, 1)
ActiveChart.FullSeriesCollection(i).IsFiltered = arrSeries(i, 1)
Next i
For i = LBound(arrCategory, 2) To UBound(arrCategory, 2)
ActiveChart.FullSeriesCollection(i).IsFiltered = arrCategory(1, i)
Next i
End Sub