Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

CurrentPage bei Pivot

Forumthread: CurrentPage bei Pivot

CurrentPage bei Pivot
Jens
Hallo zusammen,
ich habe ein recht triviales Problem. denke ich :)
möchte per Makro die Werte aus einer Pivot-Tabelle Stück für Stück in ein anderes Tabellenblatt kopieren.
Dabei möchte ich das Feld Name (CurrentPage) jeweils mit den Begriffen füllen, welche in der Zelle B17 und abwärts stehen.
Aktuell sieht es so aus:
Sheets("R 2").Select
ActiveSheet.PivotTables("PivotTable7").PivotFields("Name").CurrentPage = _
"Kunde1"
Rows("1:16").Select
Selection.Copy
ab hier komm ich zurecht ;)
Dabei soll "Kunde1" aber nicht als Text stehen, sondern aus der Zelle B17 übernommen werden.
Wie mach ich dieses Feld variabel?
B17 = Kunde1
B18 = Kunde2
B19 = Kunde3
usw.
B50 = x
schön wäre noch eine Schleife, die solange kopiert bis in Spalte B das x erreicht ist, da die Anzahl der zu kopierenden "Kunden" jedes mal anders ist.
vielen Dank für eure Hilfe
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: CurrentPage bei Pivot
22.06.2011 15:14:43
Rudi
Hallo,
etwa so:
Sub cccc()
Dim i As Long
i = 17
Do While Cells(i, 2)  "x"
With Sheets("R 2")
.PivotTables("PivotTable7").PivotFields("Name").CurrentPage = Cells(i, 2)
.Rows("1:16").Copy
'weiterer Code, mit dem du zurecht kommst ;-)
End With
Loop
End Sub

Gruß
Rudi
Anzeige
AW: CurrentPage bei Pivot
22.06.2011 15:48:22
Jens
vielen DANK!
AW: CurrentPage bei Pivot
22.06.2011 16:09:19
Jens
hmm funktioniert leider noch nicht ganz,...
er kopiert zwar die Pivottabelle,.. füllt das Feld Name aber mit " ". (also leer).
Außerdem kopiert er unendlich weiter und stoppt nicht?
wenn ich dann einen anderen Namen einstelle,.. funktioniert das Makro nicht mehr.
Die Default Eigenschaft des Pivot Items Objektes kann nicht festgelegt werden.
hmm?!
Anzeige
AW: CurrentPage bei Pivot
23.06.2011 12:21:30
Jens
hmm kann hier niemand helfen?
AW: CurrentPage bei Pivot
23.06.2011 13:08:19
Hartmut
Ich würde immer den Feldinhalt direkt mit "Value" ansprechen...
verbessert in etwa so
Option Explicit
Sub cccc()
Dim i As Long
i = 17
Do While Cells(i, 2).Value  ""  ' abruch wenn Feld leer
With Sheets("R 2")
.PivotTables("PivotTable7").PivotFields("Name").CurrentPage = Cells(i, 2).Value  ' hier  _
auch
.Rows("1:16").Copy
'weiterer Code, mit dem du zurecht kommst ;-)
End With
Loop
End Sub

Anzeige
AW: CurrentPage bei Pivot
23.06.2011 13:11:39
Hartmut
und dann nicht vergessenn
i=i+1
hinzuzufügen ,-)
AW: CurrentPage bei Pivot
24.06.2011 10:39:29
Jens
hmm.,.. das funktioniert einfach nicht :-(
er fängt nicht bei B17 an,.. sonder beginnt bereits bei B 2 die Werte in das Feld Name zu übernehmen.
da kommt natürlich Blödsinn bei raus?
irgendwas müßte daher noch geändert werden?
hier noch mal der ganze Code:
Sub Einzelbericht()
'löschen altes Blatt
Sheets("Einzelbericht").Select
Cells.Select
Selection.Clear
'Schleife für Werte ab B17 (I=17, 2=B)
Dim i As Long
i = 17
Do While Cells(i, 2).Value  "x"
With Sheets("R 2")
.PivotTables("PivotTable7").PivotFields("Name").CurrentPage = Cells(i, 2).Value
.Rows("1:16").Copy
'Einfügen und anfügen
Sheets("Einzelbericht").Select
Range("A65536").Select
Selection.End(xlUp).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
i = i + 1
End With
Loop
End Sub

Anzeige
AW: CurrentPage bei Pivot
28.06.2011 09:54:49
Jens
HILFE :D
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

CurrentPage in Pivot-Tabellen mit VBA effektiv nutzen


Schritt-für-Schritt-Anleitung

Um die Werte aus einer Pivot-Tabelle in ein anderes Tabellenblatt zu kopieren und dabei das Feld CurrentPage dynamisch zu setzen, kannst du das folgende VBA-Skript verwenden. Es wird angenommen, dass du Excel 2016 oder höher verwendest.

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (Alt + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" -> Einfügen -> Modul).
  3. Kopiere den folgenden Code in das Modul:
Sub Einzelbericht()
    ' Löschen des alten Blattes
    Sheets("Einzelbericht").Select
    Cells.Select
    Selection.Clear

    ' Schleife für Werte ab B17 (i=17, 2=B)
    Dim i As Long
    i = 17
    Do While Cells(i, 2).Value <> "x"
        With Sheets("R 2")
            .PivotTables("PivotTable7").PivotFields("Name").CurrentPage = Cells(i, 2).Value
            .Rows("1:16").Copy

            ' Einfügen und anfügen
            Sheets("Einzelbericht").Select
            Range("A65536").Select
            Selection.End(xlUp).Select
            ActiveSheet.Paste
            Application.CutCopyMode = False
            Selection.Copy
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            Application.CutCopyMode = False

            i = i + 1
        End With
    Loop
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus.

Häufige Fehler und Lösungen

  • Fehler: Die Default Eigenschaft des Pivot Items Objektes kann nicht festgelegt werden.

    • Lösung: Stelle sicher, dass der Wert in der Zelle, auf den CurrentPage gesetzt wird, tatsächlich in der Pivot-Tabelle vorhanden ist.
  • Fehler: Der Kopiervorgang läuft unendlich weiter.

    • Lösung: Überprüfe, ob die Bedingung in der Do While-Schleife korrekt geschrieben ist. Es sollte Cells(i, 2).Value <> "x" sein.
  • Fehler: Das Makro beginnt bei der falschen Zelle.

    • Lösung: Achte darauf, dass die Variable i korrekt auf 17 gesetzt wird und dass die Schleife korrekt durchläuft.

Alternative Methoden

Falls du eine andere Methode bevorzugst, um Werte aus einer Pivot-Tabelle zu extrahieren, könntest du auch eine For-Schleife verwenden:

Sub AlternativeMethode()
    Dim i As Long
    For i = 17 To 50 ' Beispiel: bis Zeile 50
        If Cells(i, 2).Value = "x" Then Exit For
        With Sheets("R 2")
            .PivotTables("PivotTable7").PivotFields("Name").CurrentPage = Cells(i, 2).Value
            .Rows("1:16").Copy
            ' Füge hier den Einfügecode ein
        End With
    Next i
End Sub

Praktische Beispiele

  • Beispiel: Wenn in Zelle B17 "Kunde1", in B18 "Kunde2" und so weiter steht, wird das Skript nacheinander die Pivot-Tabelle für jeden Kunden aktualisieren.
  • Um die Ergebnisse auf dem Blatt "Einzelbericht" zusammenzufassen, wird der Code bereits entsprechend angepasst.

Tipps für Profis

  • Verwende .Value beim Zugriff auf Zellen, um sicherzustellen, dass du den tatsächlichen Wert erhältst.
  • Setze Fehlerbehandlungsroutinen ein, um potenzielle Laufzeitfehler zu vermeiden, insbesondere bei der Arbeit mit Pivot-Tabellen.
  • Dokumentiere deine Makros gut, damit du bei Anpassungen nicht den Überblick verlierst.

FAQ: Häufige Fragen

1. Wie kann ich die Pivot-Tabelle aktualisieren, bevor ich die Werte kopiere? Aktualisiere die Pivot-Tabelle mit ActiveSheet.PivotTables("PivotTable7").RefreshTable vor der Schleife.

2. Was mache ich, wenn ich mehrere Pivot-Felder gleichzeitig anpassen möchte? Du kannst mehrere CurrentPage-Zuweisungen innerhalb der Schleife hinzufügen, indem du weitere With-Blöcke für die jeweiligen Pivot-Felder erstellst.

3. Kann ich die Schleife so anpassen, dass sie nur bestimmte Kunden kopiert? Ja, du kannst Bedingungen hinzufügen, um nur die gewünschten Kunden zu verarbeiten, z.B. If Cells(i, 2).Value Like "Kunde*".

4. Wie kann ich die Ergebnisse in ein neues Arbeitsblatt kopieren? Ändere den Zielbereich in deinem Einfügecode, um sicherzustellen, dass die Daten in das gewünschte Arbeitsblatt eingefügt werden.

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