Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1552to1556
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

pivot ManualFilter

pivot ManualFilter
10.04.2017 09:33:47
Gregor
Hallo zusammen
Ich möchte per vba im ManualFilter in einer PivotTabelle alle Werte unter Null filtern. Die Makro-Aufzeichnung ergibt folgendes Resultat:
Sub Makro2()
ActiveWorkbook.SlicerCaches("Datenschnitt_Leere_2.Kl2").ClearManualFilter
With ActiveSheet.PivotTables("Spezial").PivotFields("Leere 2.Kl")
.PivotItems("1").Visible = False
.PivotItems("2").Visible = False
.PivotItems("3").Visible = False
.PivotItems("4").Visible = False
.PivotItems("5").Visible = False
.PivotItems("6").Visible = False
.PivotItems("7").Visible = False
.PivotItems("8").Visible = False
.PivotItems("9").Visible = False
.PivotItems("10").Visible = False
.PivotItems("11").Visible = False
'usw.
.PivotItems("642").Visible = False
.PivotItems("644").Visible = False
.PivotItems("646").Visible = False
.PivotItems("(blank)").Visible = False
End With
End Sub
Das heisst, es werden alle Plus-Werte auf Visible = False gesetzt. Nun ändern sich die Plus Werte bei jeder Aktualisierung der Pivot-Tabelle.
Wie kann ich einen ManualFilter via vba ausführen?
Danke und Gruss
Gregor

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: pivot ManualFilter
11.04.2017 08:50:12
Jürgen
Hallo Gregor,
das wird sich bei Pivottabellen immer ändern.
Ich verwende in solchen Fällen eine "For-Schleife".

dim varItem as Variant
With ActiveSheet.PivotTables("Spezial").PivotFields("Leere 2.Kl")
for each varItem in .Pivotitems
if varItem > 0 or item = "" then
varItem.visible = false
else
varItem.visible = true
end if
next
end with
Anstelle des IF-Clause wäre auch ein "Select Case" möglich, um bei verschiedenen Gruppen unterschiedlich zu verfahren.
Gruß
Jürgen
AW: pivot ManualFilter
11.04.2017 14:41:19
Gregor
Hallo Jürgen
Vielen Dank, ich habe das so eingebaut und grundsätzlich funktioniert es auch. Nur habe ich viele Kriterien, weshalb das ganze langsam läuft und die Tabelle auf dem Bildschirm zeitweise "verreist", was den Nutzer irritiert.
Kann man evt. zuerst alle Items auf false setzen und dann nur noch diejenigen durchlaufen (von Minus bis zB. 0), die auf true gesetzt werden müssen?
Oder geht es mit select case schneller, wie wäre dann der Code?
Danke und Gruss
Gregor
Anzeige
AW: pivot ManualFilter
11.04.2017 19:56:29
Jürgen
Hallo Gregor,
das mit der Geschwindigkeit ist durch ein "Select Case" wahrscheinlich nicht besser.
Alle auf False setzten und anschließend die Items durcharbeiten ist auch nicht viel schneller, da trotzdem alle durchgearbeitet werden.
Der Code als Select case wäre dann:
 select case varItem
case IS > 0
varItem.visible = false
case else
varItem.visible = true
end select

Schneller ist es sicher wenn das Screenupdating ausgeschaltet wird.
Dann wird das "Bildschirmverreisen" auch verhindert.

dim varItem as Variant
application.screenupdating = false
With ActiveSheet.PivotTables("Spezial").PivotFields("Leere 2.Kl")
for each varItem in .Pivotitems
if varItem > 0 or item = "" then
varItem.visible = false
else
varItem.visible = true
end if
next
end with
application.screenupdating = true
Gruß
Jürgen
Anzeige
AW: pivot ManualFilter
12.04.2017 07:58:32
Gregor
Hallo Jürgen
Ja, mit select case dauert es ebenso lange. Screenupdating hatte ich bereits zuvor auf false gesetzt, dennoch wird der Bildschirm immer zeitweise "grau".
Ich danke dir für die Hilfe.
Gruss Gregor

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige