如何使用VBA

时间:2018-05-14 18:14:12

标签: excel-vba pie-chart vba excel

我花了几个小时研究这个问题而没有结果,MSDN中发布的Excel对象模型没有任何帮助。我有一个带有预建饼图的Excel电子表格,该饼图通过MS-Access VBA打开和操作。将填充要显示的数据,并在Access报告中使用生成的图表。我没有构建原始电子表格,但我已将其修改为供我自己使用。一位用户指出其中一个类别缺失。右键单击图表并单击"选择数据"提出了“选择数据源”#34;对话框。这些类别列在右侧。有几个未经检查。我已经手动选择了所有这些,现在图表是正确的。

问题是:我可能想要取消选择,并且(更重要的是)使用VBA代码重新选择其中一个类别。我非常确定我可以取消选择一个类别,但一旦发生这种情况,它似乎无法重新选择。可以使用VBA重新选择以前未选择的类别吗?

1 个答案:

答案 0 :(得分:0)

打开宏录制器,然后手动滤除某些类别并应用滤镜,然后手动重置滤镜。

在我的饼图中,我有类别“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