如何使用 VBA 在 Excel 饼图上显示隐藏类别
How to show hidden categories on an Excel Pie chart using VBA
我已经花了几个小时研究这个问题但没有结果,MSDN 中发布的 Excel 对象模型也没有任何帮助。我有一个 Excel 电子表格,其中包含一个通过 MS-Access VBA 打开和操作的预建饼图。填充要显示的数据,并在 Access 报告中使用生成的图表。我没有构建原始电子表格,但我对其进行了修改以供自己使用。一位用户指出其中一个类别丢失了。右键单击图表并单击 "select data" 会弹出 "Select Data Source" 对话框。类别列在右侧。有几个未经检查。我已经手动 select 编辑了它们,现在图表是正确的。
问题是:我可能想使用 VBA 代码取消 select 和(更重要的是)重新 select 这些类别之一。我很确定我可以取消 select 一个类别,但一旦发生这种情况,似乎就不可能重新 select。是否可以使用 VBA 重新select编辑以前未select编辑的类别?
打开宏录制器,然后手动过滤掉一些类别并应用过滤器,然后手动重置过滤器。
在我的饼图中,我有类别 "a" 到 "f",我手动过滤掉 "b" 和 "d",然后恢复它们。这是我录制的代码:
Sub Macro1()
'
' Macro1 Macro
'
'
ActiveChart.ChartGroups(1).FullCategoryCollection(2).IsFiltered = True
ActiveChart.ChartGroups(1).FullCategoryCollection(4).IsFiltered = True
ActiveChart.ChartGroups(1).FullCategoryCollection(2).IsFiltered = False
ActiveChart.ChartGroups(1).FullCategoryCollection(4).IsFiltered = False
End Sub
要重置饼图中的类别过滤器,运行 这个(我根据上面记录的代码编写的):
Sub ResetCategoryFilters()
Dim iPt As Long, nPts As Long
With ActiveChart.ChartGroups(1)
nPts = .FullCategoryCollection.Count
For iPt = 1 To nPts
.FullCategoryCollection(iPt).IsFiltered = False
Next
End With
End Sub
我已经花了几个小时研究这个问题但没有结果,MSDN 中发布的 Excel 对象模型也没有任何帮助。我有一个 Excel 电子表格,其中包含一个通过 MS-Access VBA 打开和操作的预建饼图。填充要显示的数据,并在 Access 报告中使用生成的图表。我没有构建原始电子表格,但我对其进行了修改以供自己使用。一位用户指出其中一个类别丢失了。右键单击图表并单击 "select data" 会弹出 "Select Data Source" 对话框。类别列在右侧。有几个未经检查。我已经手动 select 编辑了它们,现在图表是正确的。
问题是:我可能想使用 VBA 代码取消 select 和(更重要的是)重新 select 这些类别之一。我很确定我可以取消 select 一个类别,但一旦发生这种情况,似乎就不可能重新 select。是否可以使用 VBA 重新select编辑以前未select编辑的类别?
打开宏录制器,然后手动过滤掉一些类别并应用过滤器,然后手动重置过滤器。
在我的饼图中,我有类别 "a" 到 "f",我手动过滤掉 "b" 和 "d",然后恢复它们。这是我录制的代码:
Sub Macro1()
'
' Macro1 Macro
'
'
ActiveChart.ChartGroups(1).FullCategoryCollection(2).IsFiltered = True
ActiveChart.ChartGroups(1).FullCategoryCollection(4).IsFiltered = True
ActiveChart.ChartGroups(1).FullCategoryCollection(2).IsFiltered = False
ActiveChart.ChartGroups(1).FullCategoryCollection(4).IsFiltered = False
End Sub
要重置饼图中的类别过滤器,运行 这个(我根据上面记录的代码编写的):
Sub ResetCategoryFilters()
Dim iPt As Long, nPts As Long
With ActiveChart.ChartGroups(1)
nPts = .FullCategoryCollection.Count
For iPt = 1 To nPts
.FullCategoryCollection(iPt).IsFiltered = False
Next
End With
End Sub