Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1288to1292
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

Pivottabelle über Makros steuern

Pivottabelle über Makros steuern
10.12.2012 19:01:59
Matte
Guten Abend,
ich bin Praktikant und aktualisiere derzeit eine Datei mit einigen Pivottabellen die nach Monat gefilerte Top-10-Listen enthalten. Derzeit ist es so, dass man diese Pivottabellen monatlich manuell anpassen muss. Bspw. Monat 9 zu 10 und dann nach Wert absteigend sortieren. Ist es möglich, diese Pivottabellen durch eine Makro zu aktualisieren? Meine ersten Schritte mit Makrorecorder und bisschen rumprobieren sahen wie folgt aus:
Sub Januar()
' Januar Makro
With ActiveWorkbook.Sheets("Werkzeuge").PivotTables("PivotTable49").PivotFields("Per")
.PivotItems("1").Visible = True
.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
.PivotItems("12").Visible = False
.PivotItems("(blank)").Visible = False
End With
Bei einer Pivot klappt es ganz gut, will ich mehrere aufnehmen, kommt es zu Fehlermeldungen.
Bin für jede Hilfe dankbar!

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivottabelle über Makros steuern
11.12.2012 07:13:55
fcs
Hallo Malte,
mit Excel ab Version 2007 sollte folgendes funktionieren
Bei älteren Excelversionen geht es evtl. nicht. Dann müssen die Pivotitems ggf. einzeln sichtbar/unsichtbar gesetzt werden. Das Problem ist dabei, dass immer mindestens 1 Pivotitem sichtbar sein muss, sonst gibt es einen Fehler. Oft muss man eine Fehlerbehandlung einbauen, die ggf. fehlende Items überspringt.
Die Sortierung muss du nur einmal für den Pivotbericht so einrichten wie es sein soll, dann ist eine Anpassung per Makro nicht erforderlich, es sei denn du arbeitest mit unterschiedlichen Sortierungen.
Bei Makroprogrammierung von Pivot-Tabellenberichten tut man sich wesentlich leichter, wenn man für alle Elemente, die man per Makro bearbeiten will entsprechende Objektvariablen deklariert.
Gruß
Franz
'Makro unter Excel 2010
Sub Januar()
' Januar Makro
Dim pvTab As PivotTable, pvField As PivotField
Set pvTab = ActiveWorkbook.Sheets("Werkzeuge").PivotTables("PivotTable49")
'oder besser wenn im Blatt nur eine Pivottabelle
Set pvTab = ActiveWorkbook.Sheets("Werkzeuge").PivotTables(1)
Set pvField = pvTab.PivotFields("Per")
With pvField
.ClearAllFilters
.PivotFilters.Add Type:=xlCaptionEquals, Value1:="1"
End With
End Sub

Anzeige
AW: Pivottabelle über Makros steuern
11.12.2012 07:25:56
Matte
Vielen Dank schonmal, werde es gleich ausprobieren!

AW: Pivottabelle über Makros steuern
11.12.2012 08:18:46
Matte
Klappt schonmal! :) Was kann ich einsetzen wenn ich mehrere Blätter mit gleichnamigen pivots habe?

AW: Pivottabelle über Makros steuern
11.12.2012 09:38:32
fcs
Hallo Malte,
wenn du immer nur einen Pivotbericht je Tabellenblatt hast, dann kannst du mit der Index-Nr =1 statt des Namens arbeiten.
Außerdem solltest du mit einer Subroutine Arbeiten, an die der Monat als Variable übergeben wird.
Diese kannst du mit einer Hauptroutine aufrufen in der Monat eingegeben wird oder du machst für jeden Monat eine eigene Hauptroutine.
Gruß
Franz
Sub PivotTabs_Monat()
Dim strMonat As String
Eingabe:
strMonat = VBA.InputBox(Prompt:="Bitte Nummer des Monats eingeben", _
Title:="Pivottabellen - Monat setzen", _
Default:="")
If strMonat = "" Then    'Abgebrochen
GoTo Beenden
ElseIf IsNumeric(strMonat) Then
Select Case Val(strMonat)
Case 1 To 12
Call Pivots_Aktualisieren(sMonat:=strMonat)
GoTo Beenden
End Select
End If
MsgBox "Als Eingabe sind nur Zahlenwerte von 1 bis 12 zulässig", _
vbInformation, "Pivottabellen - Monat setzen"
GoTo Eingabe
Beenden:
End Sub
Sub Pivots_Aktualisieren(ByVal sMonat As String)
Dim arrTabellen, arrPivotTab
Dim intI As Integer
Dim pvTab As PivotTable, pvField As PivotField
arrTabellen = Array("Werkzeuge", "Maschinen") 'Liste der Tabellen mit Pivotberichten
'arrPivotTab = Array("Pivottabelle49", "Pivottabelle49") 'Liste der Pivotberichte
For intI = LBound(arrTabellen) To UBound(arrTabellen)
Set pvTab = ActiveWorkbook.Sheets(arrTabellen(intI)).PivotTables(1)
'    Set pvTab = ActiveWorkbook.Sheets(arrTabellen(intI)).PivotTables(arrPivotTab(intI))
'    Set pvTab = ActiveWorkbook.Sheets(arrTabellen(intI)).PivotTables("Pivottable40")
Set pvField = pvTab.PivotFields("Per")
With pvField
.ClearAllFilters
.PivotFilters.Add Type:=xlCaptionEquals, Value1:=sMonat
End With
Next intI
End Sub
'Makro unter Excel 2010
Sub Januar()
' Januar Makro
Call Pivots_Aktualisieren(sMonat:="1")
End Sub

Anzeige
AW: Pivottabelle über Makros steuern
11.12.2012 12:27:31
Matte
Sind mehrere pivots pro blatt aber Vielen dank, hab es mit deiner Lösung vorher hinbekommen!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige