【问题标题】:excel vba unselect a specific value form a chart seriesexcel vba从图表系列中取消选择特定值
【发布时间】:2015-05-13 23:42:45
【问题描述】:

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

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

【问题讨论】:

  • 我没有 2013 用于测试,但你试过了吗:MySeries.IsFiltered = True 我不确定Select Case 在那里做什么?
  • 嗨蒂姆,感谢您的回复。是的,我一开始就试过了,但没有奏效。为了澄清,图表有 9 个 xvalues 名称。其中一个,如果出现在系列中,应该隐藏。这里最大的问题似乎是让变量检查每个系列名称,它没有,它只检查一个名称,然后退出子。
  • 它是什么类型的图表?似乎您的 XValues 是分类的,而不是连续的?

标签: excel charts series vba


【解决方案1】:

您的代码的主要问题是您使用的是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 问题。请参阅问题的 cmets。 Set an excel chart filter with VBA

【讨论】:

  • 您好,拜伦,感谢您的回复。您的 If 代码应该是正确的,但我们需要纠正一件事,这就是这里的全部问题。我已经尝试了您的建议,但它没有按我的预期工作。为了澄清,图表有 9 个 xvalues 名称。其中一个,如果出现在系列中,应该隐藏。这里最大的问题似乎是检查名称系列集合列表中的每个系列名称。如果您尝试运行您的代码,您将让它检查一个名称,然后退出代码。任何建议我们如何获得代码来检查 x 轴中的所有系列名称?
  • 我添加了处理类别的代码。我认为您可以隐藏一个类别或一个系列,但不能隐藏特定于单个系列和单个类别的单个栏。
  • 谢谢拜伦,这很好用。我想我一直在寻找太具体的东西,我没有看到任何与我的问题相关的项目。再次感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多