Próbowałem już teraz kopiować i wklejać rozwiązania z Internetu, aby spróbować filtrować tabelę przestawną w programie Excel przy użyciu języka VBA. Poniższy kod nie działa.Filtrowanie tabeli przestawnej programu Excel przy użyciu VBA
Sub FilterPivotTable()
Application.ScreenUpdating = False
ActiveSheet.PivotTables("PivotTable2").ManualUpdate = True
ActiveSheet.PivotTables("PivotTable2").PivotFields("SavedFamilyCode").CurrentPage = "K123223"
ActiveSheet.PivotTables("PivotTable2").ManualUpdate = False
Application.ScreenUpdating = True
End Sub
Chcę filtrować, więc widzę wszystkie wiersze, które mają SavedFamilyCode K123223. Nie chcę widzieć żadnych innych wierszy w tabeli przestawnej. Chcę, żeby to działało bez względu na poprzednie filtry. Mam nadzieję, że możesz mi w tym pomóc. Dzięki!
podstawie Twojego posta Staram:
Sub FilterPivotField()
Dim Field As PivotField
Field = ActiveSheet.PivotTables("PivotTable2").PivotFields("SavedFamilyCode")
Value = Range("$A$2")
Application.ScreenUpdating = False
With Field
If .Orientation = xlPageField Then
.CurrentPage = Value
ElseIf .Orientation = xlRowField Or .Orientation = xlColumnField Then
Dim i As Long
On Error Resume Next ' Needed to avoid getting errors when manipulating fields that were deleted from the data source.
' Set first item to Visible to avoid getting no visible items while working
.PivotItems(1).Visible = True
For i = 2 To Field.PivotItems.Count
If .PivotItems(i).Name = Value Then _
.PivotItems(i).Visible = True Else _
.PivotItems(i).Visible = False
Next i
If .PivotItems(1).Name = Value Then _
.PivotItems(1).Visible = True Else _
.PivotItems(1).Visible = False
End If
End With
Application.ScreenUpdating = True
End Sub
Niestety dostaję Run time error 91: Object zmienną lub ze zmienną blok nie jest ustawiona. Co spowodowało ten błąd?
Czy próbowałeś nagrywać makro? –
uzyskać coś na wzór Sub FilterPivotTable() Z ActiveSheet.PivotTables ("PivotTable2"). PivotFields ("SavedFamilyCode") .PivotItems ("K010"). Visible = True .PivotItems ("K012") .Visible Właściwość ta = false End With End Sub Ale chcę wszystko oprócz K010 stać się niewidzialny makro rejestrator ignoruje moje zaznaczyć/odznaczyć wszystkie kliknięcia – user1283776