VBA获取pivottable中Page Field下拉框中所有项

brucenan999 2008-07-16 03:04:15
现在想用VBA获得PAGE FIELD中某一个下拉框中的所有项用来做循环,但总是取不到值,不知道怎么办.

Dim field As PivotField
Dim item As PivotItem

Set field = Sheet1.PivotTables(1).PivotFields("[Division].[Division Name]")

For Each item In Sheet1.PivotTables(1).PivotFields("[Division].[Division Name]").PivotItems
field.CurrentPage = item
Next

循环根本进不去,field取得的pivotitems里什么都没有.但是我的PIVOTTABLE的Division这一下拉框中有N多数据项...

...全文
750 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
brucenan999 2008-07-23
  • 打赏
  • 举报
回复
突然想起我用的是CUBE做数据源的,可能与一般的表处理不同.
沐NeMo 2008-07-23
  • 打赏
  • 举报
回复
呵呵。那就去改啊。我在3楼也说是不是源数据表有问题啊。呵呵。
沐NeMo 2008-07-22
  • 打赏
  • 举报
回复
对数据透视表编程可能会很复杂。
PivotTable 对象用法
可用 PivotTables(index)(其中 index 为数据透视表索引号或名称)返回单个 PivotTable 对象。下例使 Sheet3 上第一张数据透视表中的字段“Year”成为行字段。
Worksheets("Sheet3").PivotTables(1).PivotFields("Year").Orientation = xlRowField

表示数据透视表中的一个字段。PivotField 对象是 PivotFields 集合的成员。PivotFields 集合包含数据透视表中所有的字段,也包括隐藏字段。

PivotField 对象的用法
使用 PivotFields(index) 返回单个 PivotField 对象,其中,index 为字段名称或编号。下例使 Sheet3 上第一张数据透视表中的字段“Year”成为行字段。

Worksheets("sheet3").PivotTables(1).PivotFields("year").Orientation = xlRowField

下列属性返回数据透视表字段的子集,在某些情况下,使用这些属性会更为方便:

ColumnFields 属性
DataFields 属性
HiddenFields 属性
PageFields 属性
RowFields 属性
VisibleFields 属性

----------------

应该可以获得数据的。要不你吧数据改成简单的。就一列几行数据,做简单测试一下。
你说的直接读取sheet的数据源也是一种办法。
brucenan999 2008-07-21
  • 打赏
  • 举报
回复
我用同样的方法可以取到Column Fields 和Row Fields的数据,就是取不到Page Field的数据,我怀疑下拉框里的数据是实时取数据库的.
沐NeMo 2008-07-20
  • 打赏
  • 举报
回复
去不到内容,你确定field对象是否存在。确定每一个对象都存在。
或试一试:
Sheet1.PivotTables(1).PivotFields("[Division Name]")
Sheet1.PivotTables(1).PivotFields("Division Name")
搞透视表比较麻烦。

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧