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

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

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
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
Anzeige
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
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige