Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Pivot xlrunningTotal

Forumthread: VBA Pivot xlrunningTotal

VBA Pivot xlrunningTotal
03.09.2018 14:24:03
Lutz
Hallo liebe Excel-Profis,
ich habe eine Pivot-Tabelle mit diversen Spalten bei denen ich die Berechnung auf Laufende Summe setzen muß...
Bei manchmal 60 Spalten viel Arbeit.
Daher dachte ich ein Makro kann das machen.
Aufgezeichnet bekomme ich:
Sub Makro1()
With ActiveSheet.PivotTables("PivotTable1").PivotFields(" Artikel1")
.Calculation = xlRunningTotal
.BaseField = "Hier2"
End With
End Sub
Nun dachte ich, ich kann alle Felder durchlaufen und das setzen:
Sub Makromore2()
Dim pi As PivotItem, iStart As Integer, pt As PivotTable
For Each pt In ActiveSheet.PivotTables
For Each pi In pt.DataPivotField.PivotItems
pi.Calculation = xlRunningTotal
pi.BaseField = "Hier2"
Next
Next
End Sub

Leider klappt das nicht, bei
pi.Calculation = xlRunningTotal
steigt er aus - obwohl er das erste Feld in der pi variablen hat.
Weiß jemand Rat?
Vielen Dank für Eure Hilfe und viele Grüße
Lutz
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Pivot xlrunningTotal
03.09.2018 14:58:31
Dieter
Hallo Lutz,
die Eigenschaften Calculation und BaseField gibt es nur für die PivotField-Objekte, nicht für PivotItem.
Ohne dass ich das testen kann, schlage ich den folgenden Versuch vor:
Sub Bearbeitung()
Dim pf As PivotField
For Each pf In ActiveSheet.PivotTables(1).PivotFields
pf.Calculation = xlRunningTotal
pf.BaseField = "Hier2"
Next pf
End Sub
Viele Grüße
Dieter
Anzeige
AW: VBA Pivot xlrunningTotal
03.09.2018 15:34:06
Lutz
Hallo Dieter,
vielen Dank - läuft leider nicht: Laufzeitfehler 1004
Die Calculation-Eigenschaft des Pivotfeld-Objektes kann nicht festgelegt werden.
Vielleicht fällt dir dazu etwas ein?
Vielen Dank und viele Grüße
Lutz
AW: VBA Pivot xlrunningTotal
03.09.2018 16:05:23
Dieter
Hallo Lutz,
könntest du eine Beispielmappe hochladen.
Daten können reduziert, verändert und/oder anonymisiert sein.
Viele Grüße
Dieter
Anzeige
AW: VBA Pivot xlrunningTotal
03.09.2018 19:59:52
Dieter
Hallo Lutz,
das ist echt kurios. Ich hätte gedacht, das geht mit dem folgenden Programm:
Sub RunningTotal_SoNicht()
Dim ws As Worksheet
Dim pt As PivotTable
Dim pf As PivotField
Set ws = ThisWorkbook.Worksheets(1)
Set pt = ws.PivotTables(1)
For Each pf In pt.PivotFields
If InStr(pf.Name, "Artikel") > 0 Then
On Error Resume Next
pf.Calculation = xlRunningTotal
pf.BaseField = "Hier2"
On Error GoTo 0
End If
Next pf
End Sub
Geht aber nicht. Mit dem folgenden Programm dagegen funktioniert es (jedenfalls bei deiner Beispielmappe):
Sub RunningTotal_SoGehts()
Dim ws As Worksheet
Dim pt As PivotTable
Dim pf As PivotField
Set ws = ThisWorkbook.Worksheets(1)
Set pt = ws.PivotTables(1)
For Each pf In pt.PivotFields
If InStr(pf.Name, "Artikel") > 0 Then
On Error Resume Next
With pt.PivotFields(" " & pf.Name)
.Calculation = xlRunningTotal
.BaseField = "Hier2"
End With
On Error GoTo 0
End If
Next pf
End Sub
Viele Grüße
Dieter
P.S. Ich lass die Frage offen, vielleicht hat ja noch jemand eine Erklärung für das seltsame Phänomen.
Anzeige
AW: VBA Pivot xlrunningTotal
04.09.2018 08:46:02
Lutz
Hallo Dieter,
ja mnachmal sind die Vorgänge bei VBA nicht so klar...
Ich habe das mal ein bisschen angepasst:
Sub RunningTotal_SoGehts3()
Dim ws As Worksheet
Dim pt As PivotTable
Dim pf As PivotField
Set ws = ActiveWorkbook.ActiveSheet
Set pt = ws.PivotTables(1)
For Each pf In pt.PivotFields
If pf.Orientation = 0 Then
On Error Resume Next
With pt.PivotFields(" " & pf.Name)
.Calculation = xlRunningTotal
.BaseField = "Hier2"
End With
On Error GoTo 0
End If
Next pf
End Sub

Auf ActiveWorkbook und ActiveSheet damit es in jeder Tabelle geht.
Und die Artikel heissen nicht immer "Artikel" - die sind mal Numerisch mal Alphanumerisch.
Aber Wertfelder haben pf-Orientation = 0 also kann man die durchgehen:)
Jetzt funktioniert das Super!
Also noch mal vielen lieben Dank für Deine Hilfe und noch einen schönen Tag.
Viele Grüße Lutz
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige