我一直在尝试创建子,它通过选择几个条形码来帮助过滤商品清单。我知道我可以手动完成,但它非常漫长而令人沮丧,因为大约有2000个独特的条形码。我记录了一个宏,并在这里发现了一些类似的答案,但是我收到一个错误“运行时错误'1004':应用程序定义的或对象定义的错误'当PI.value被赋值为true或false时, .Visible = True; Pi.Visible =假”Excel VBA数据透视表通过条形码过滤
代码:
私人小组CommandButton1_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]")
你能发布更多关于数据透视表的设置吗?我尝试了一个与你的逻辑类似的小例子,它工作,但我用ActiveSheet.PivotTables(“PivotTable1”)。PivotFields(“Barkodas”) –
此外,通过条形码循环一次,检查每个PivotItem对MyNames会更快比循环条码三次,每次检查一个条形码 –