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