【发布时间】:2014-04-02 20:51:49
【问题描述】:
我一直在尝试创建子,通过选择几个条形码来帮助过滤商品列表。我知道我可以手动完成,但它很长而且令人沮丧,因为大约有 2000 个独特的条形码。我已经录制了一个宏并在这里找到了一些类似的答案,但是我收到一个错误“运行时错误'1004':应用程序定义或对象定义的错误'它在 PI.value 被分配真或假时卡住:“PI .可见=真; Pi.Visible = False"。
代码:
私有子命令按钮1_Click()
Dim MyNames() As Variant Dim objPivotField As PivotField Dim i As Long Dim PI As PivotItem Set objPivotField = _ ActiveSheet.PivotTables("PivotTable1").PivotFields(Index:="[Prekė].[Barkodas].[Barkodas]") MyNames = Array("4770349225872", "4770033220077", "7622400004773") With ActiveSheet.PivotTables("PivotTable1").PivotFields(Index:="[Prekė].[Barkodas].[Barkodas]") For i = LBound(MyNames) To UBound(MyNames) For Each PI In .PivotItems If PI.Name = MyNames(i) Then PI.Visible = True Else PI.Visible = False End If Next PI Next i End With End Sub
这是我为过滤而录制的宏:
ActiveSheet.PivotTables("PivotTable1").PivotFields( _ "[Prekė].[Barkodas].[Barkodas]").VisibleItemsList = Array("", _ "[Prekė].[Barkodas].&[4750398000132]", "", "[Prekė].[Barkodas].&[4046234141238]", _ "[Prekė].[Barkodas].&[4770248342625]")
【问题讨论】:
-
您能发布更多关于数据透视表设置的信息吗?我尝试了一个与您的逻辑相似的小示例,它有效,但我使用了 With ActiveSheet.PivotTables("PivotTable1").PivotFields("Barkodas")
-
此外,遍历条形码一次并根据 MyNames 检查每个 PivotItem 比遍历条形码三次(每次检查单个条形码)要快