数据透视表DataBodyRange.Count问题

时间:2016-03-11 23:15:56

标签: vba excel-vba pivot-table excel

我正在处理一个VBA表单,它可以操作和从数据透视表中提取。

我可以看一下,通过我的代码应用过滤器,并相应地查看数据透视表更新。

然后我将DataBodyRange从1循环到DataBodyRange.Count,并在每行中“执行”。

直到我通过一些手表和断点发现,当DataBodyRange有一个项目(加上“标题”)计数为1

时,它工作得很好

但是,如果DataBodyRange有0项(换句话说只有“标题”行),则计数STILL返回1

我可以证明这种行为。采取下表及其相应的数据透视表:

enter image description here

报告布局是表格

使用以下测试子

Public Sub Test()
  Dim PT As PivotTable
  Dim PF As PivotField
  Dim F As PivotFilter

  Set PT = ThisWorkbook.Worksheets("Sheet1").PivotTables("PivotTable1")
  Set PF = PT.PivotFields("Name")
  Set F = PF.PivotFilters(1)
  MsgBox "Filter: """ & F.Value1 & _
         """ As Filter Type " & F.FilterType & _
         " on PivotField """ & PF.Name & _
         """ DataBodyRange.Count = " & PT.DataBodyRange.Count
End Sub

应用第一个过滤器进行控制测试

enter image description here

相应的数据透视表更改

enter image description here

运行测试():

enter image description here

按预期返回1

现在控制已经建立

让我们应用一个与任何东西不匹配的过滤器

enter image description here

和数据透视表更改

enter image description here

最后运行Test()

enter image description here

我在工作中实际使用的VBA代码是Excel 2010.这些屏幕截图来自Excel 2013,因此这种“行为”似乎在不同版本中非常一致。

我错过了什么?

0 个答案:

没有答案