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

excel vba unselect a specific value form a chart series

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

我正在尝试取消选择图表中的特定值。从图表中取消选择类别是问题所在。基本上,来自该图表中的所有系列。如果其中一个系列名称(值)等于 "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

您的代码的主要问题是您使用的是 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