使用多个变量创建If Next循环(工作代码)

时间:2015-11-26 16:54:17

标签: excel vba excel-vba loops for-loop

我有一张表用于动态调整图表。

为此我使用下面的代码,它按预期工作,但由于我是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
    ' ...

1 个答案:

答案 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