对于这里的许多参与者来说,这应该是非常基础的。另外,这是我在这里的第一个问题,所以如果我犯了错误,我很抱歉。
我正在尝试从图表中取消选择特定值。从图表中取消选择类别是问题所在。基本上,来自该图表中的所有系列。如果其中一个系列名称(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
答案 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