PivotTable.DataField mit VBA tauschen, wenn kein Platz

16/03/2009 - 14:31 von Werner News | Report spam
Hallo,

bei einer Pivottabelle soll per VBA das Datenfeld 'Umsatz' entfernt und
stattdessen das Feld 'Gewinn' als Datenfeld eingefügt werden.

Mit Sub PivotDataFieldAendern ist dies möglich. Wenn jedoch unter der
Pivottabelle nicht genügend leere Zellen vorhanden sind, kommt fragt
Excel: 'Wollem Sie den Inhalt der Zielzellen in Tabelle1 ersetzen?'
'Abbrechen' führt zu 'Laufzeitfehler '1004': Die
Orientation-Eigenschaft des PivotField-Objektes kann nicht festgelegt
werden.' 'OK' führt dazu, dass die Inhalte der Zielzellen gelöscht
werden.

Sub PivotDataFieldAendern()
With ActiveSheet.PivotTables(1)
With .PivotFields('Gewinn')
.Orientation = xlDataField
End With
.DataFields(1).Orientation = xlHidden
End With
End Sub

Mit dem PivotTable-Assistenten können diverse Änderungen am Layout
einer Pivottabelle vorgenommen werden. Wieviel Platz die Pivottabelle
bei irgendwelchen Zwischenschritten benötigen würde, ist dabei völlig
egal. Entscheidend ist wieviel Platz die Tabelle beim Beenden des
Assitenten braucht. Mit dem Assistenten kann also auch dann ein
Datenfeld entfernt und ein anderes hinzugefügt werden, wenn die Zellen
unterhalb der Tabelle nicht leer sind. Geht das auch mit VBA?

Ich nutze Pivottabellen gerne um dynamische Diagramme zu erstellen.
Dabei lege ich Dropdown-Felder auf Diagramme. Den Dropdowns weise ich
Makros zu. Bei verànderter Auswahl werden die den Abbildungen zugrunde
liegenden Pivottabellen geàndert, um die gewünschten Daten anzuzeigen.
Dabei ist es nicht leicht einzuschàtzen, wieviel leere Zellen unterhalb
oder auch rechts von Pivottabellen für spàtere Verànderungen am Layout
mit VBA leer gelassen werden müssen. Übrigens: Auch wenn das vorhandene
Feld entfernt wird, bevor ein neues hinzugefügt wird, braucht die
Pivottabelle zwischen diesen beiden Schritten mehr Platz (zumindest
dann, wenn es das einzigen Datenfeld war).

Werner
 

Lesen sie die antworten

#1 Bernd P
16/03/2009 - 16:15 | Warnen spam
Hallo Werner,

Das hoert sich nach einer pfiffigen Nutzung an. Bestehst Du auf
Pivottabellen oder waerest Du auch fuer eine VBA Loesung offen (falls
die Pivottabellen nicht zu komplex sind)?

Ich arbeite gerade an einer Erweiterung meiner einfachen Reporting
Tools via VBA (siehe beispielsweise http://www.sulprobil.com/html/sfreq.html)
und suche nach guten Beispielaufgaben.

Viele Gruesse,
Bernd

Ähnliche fragen