excel vba从图表系列中取消选择特定值

时间:2015-05-13 23:42:46

标签: excel-vba charts series vba excel

对于这里的许多参与者来说,这应该是非常基础的。另外,这是我在这里的第一个问题,所以如果我犯了错误,我很抱歉。

我正在尝试从图表中取消选择特定值。从图表中取消选择类别是问题所在。基本上,来自该图表中的所有系列。如果其中一个系列名称(Value)是iqual" NotThisSeries"然后取消选择它。

Sub exmpl()

Dim MySeries As Variant

ActiveSheet.ChartObjects("Chart 3").Activate

For Each MySeries In ActiveChart.SeriesCollection

  Select Case MySeries.XValues

    Case MySeries.Name = "NotThisSeries"

      ActiveChart.SeriesCollection(MySeries.Name).IsFiltered = True

    Case Else

  End Select

Next MySeries

End Sub

1 个答案:

答案 0 :(得分:0)

您的代码的主要问题是,当您似乎只需要一个简单的Select Case时,您正在使用If

更正后的代码是

Sub exmpl()

    Dim MySeries As Series
    ActiveSheet.ChartObjects("Chart 3").Activate

    For Each MySeries In ActiveChart.SeriesCollection
      If MySeries.Name = "NotThisSeries" Then
          ActiveChart.SeriesCollection(MySeries.Name).IsFiltered = True
        End If
    Next MySeries

End Sub

如果您想使用Select Case来处理其他名称,这是正确的方法:

Sub exmpl()

    Dim MySeries As Series
    ActiveSheet.ChartObjects("Chart 3").Activate

    For Each MySeries In ActiveChart.SeriesCollection
        Select Case MySeries.Name
            Case "NotThisSeries"
              ActiveChart.SeriesCollection(MySeries.Name).IsFiltered = True
        End Select
    Next MySeries

End Sub

修改,这里是隐藏类别而不是系列的相应代码。

Sub exmpl()

    Dim MySeries As Series
    ActiveSheet.ChartObjects("Chart 3").Activate

    Dim i As Integer
    Dim cat As ChartCategory

    For i = 1 To ActiveChart.ChartGroups(1).FullCategoryCollection.Count

        Set cat = ActiveChart.ChartGroups(1).FullCategoryCollection(i)

        If cat.Name = "NotThisSeries" Then
            cat.IsFiltered = True
        End If
    Next

End Sub

这是另一个有助于第二部分的SO问题。查看问题的评论。 Set an excel chart filter with VBA