【发布时间】:2015-01-20 00:00:29
【问题描述】:
我被困在这个问题上,无法弄清楚我做错了什么。我正在编写一个宏来遍历数据透视表中的可见字段,在这些字段中找到被过滤的项目,然后将这些过滤器应用于源数据表。我遇到的特定问题是处理一个循环,该循环应该在一个字段中查找,找到可见的枢轴项,然后将这些项存储为变量。如果所有枢轴项目都可见,我一直在尝试终止循环。以下是我目前所拥有的:
Sub PivotTest2()
Dim pi As PivotItem
Dim count As Integer
Dim available As Integer
Dim row As Integer
available = ActiveSheet.PivotTables("Cities").PivotFields("City").PivotItems.count
row = 2 'This is your starting row for display
For Each pi In ActiveSheet.PivotTables("Cities").PivotFields("City").PivotItems
If pi.Visible Then
count = count + 1
End If
If count = available Then
MsgBox ("All Pivot Items Are Selected")
End If
If count <> available Then
row = row + 1
Range("'Sheet4'!G" & row) = pi.Name
End If
Next pi
End Sub
因此,每当我对一个城市或一组城市进行过滤时,宏都会将它们粘贴到电子表格中的某个范围内。最终,我想将它们存储为变量,但现在我只是为了处理代码而粘贴它们。您还可以看到,当可见项的数量等于该字段中枢轴项的总数时,我将返回一个消息框。最终,该消息框将消失,并由告诉它开始查看下一个可见字段中的枢轴项的代码替换。
我意识到这可能是不必要的,因为将所有可见项目作为过滤器应用于源数据字段将导致显示所有项目,这完成了同样的事情。但是,我现在更好奇我做错了什么。代码将所有项目粘贴到范围内,无论是否有过滤器。但是,消息框仅在未应用过滤器时才会返回,因此它似乎工作正常。
我们将不胜感激任何输入/反馈。谢谢。
【问题讨论】:
标签: vba excel pivot-table