Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Pivot mit VBA aktualisieren

Pivot mit VBA aktualisieren
06.10.2016 07:57:14
Ludicla
Hey Profis,
ich hab folgenden Code zum aktualisieren einer Pivot Tabelle, bei deren Basis
ein SVERWEIS neu aufgebaut wird.
Im 2. Step soll die Pivot aktualisiert werden - bringt aber immer einen
Bezugsfehler.
Erst beim Drücken des Aktualiesierungsfehlers wird die Pivot korrekt
abgebildet.
Sub auto_open()
MsgBox "Sverweis wird aktualisiert"
Sheets("Zusammenfassung").Visible = True
Sheets("Zusammenfassung").Select
Range("A2153:CF2153").Select
Selection.AutoFill Destination:=Range("A2153:CF12152")
Sheets("Zusammenfassung").Visible = False
Sheets("MZW").Select
Range("A4").Select
ActiveSheet.PivotTables("PivotTable24").PivotCache.Refresh
End Sub
ich hab in der gleichen Datei mehrere Dateien mit jeweils einer Pivot-Tabelle
Liegt es an der Pivot-Tabelle 24 oder an etwas anderen ?
könnt Ihr mir helfen wo der Fehler liegt ?
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivot mit VBA aktualisieren
06.10.2016 22:02:00
fcs
Hallo Ludicla,
wenn auf dem Tabellenblatt nur ein Pivot-Tabellenbericht plaziert ist, dann kann man den Namen auch durch den Index 1 ersetzen.
Die Select-Anweisungen kann man fast alle Weglassen, wenn man die entsprechenden Objekte direkt anspricht.
Gruß
Franz
Sub auto_open()
MsgBox "Sverweis wird aktualisiert"
With Sheets("Zusammenfassung")
.Visible = True
.Select 'Eigentlich überflüssig wenn man ohne Zellselektionen arbeitet
.Range("A2153:CF2153").AutoFill Destination:=.Range("A2153:CF12152")
.Visible = False
End With
Dim pvTab As PivotTable
With Sheets("MZW")
.Select 'kann man weglassen - es sei denn dieses _
Tabellenblatt soll zwingend angezeigt werden
Set pvTab = .PivotTables(1)
pvTab.PivotCache.Refresh
'oder
pvTab.RefreshTable
End With
End Sub

Anzeige
AW: Pivot mit VBA aktualisieren
06.10.2016 22:11:12
Piet
Hallo Ludicia
ich habe mir den Code mal angesehen und ihn umgeschrieben. Auf Select kann man verzichten.
Man könnte evtl. sogar auf: Sheets("Zusammenfassung").Visible = True/False verzichten.
Einfach mal ausprobieren ob die With Klammer auch ohne Ein- ausblenden funktioniert?
Die Zeile mit AufoFill habe ich nicht verstanden, was wird da aus der Destination geholt / kopiert?
Ich weiss nich ob ich den Fehler gesehen habe? Prüfe diese Bereiche bitte einmal nach: -unstimmig-
Der 2. Range Wert stimmt nicht !!! -- Müssen diese Bereich für AutoFill nicht exakt übereinstimmen?
.Range("A2153:CF2153").AutoFill
Destination:=.Range("A2153:CF12152")
mfg Piet
Sub auto_open()
MsgBox "Sverweis wird aktualisiert"
Sheets("Zusammenfassung").Visible = True
With Sheets("Zusammenfassung")
.Range("A2153:CF2153").AutoFill Destination:=.Range("A2153:CF12152")
End With
Sheets("Zusammenfassung").Visible = False
With Sheets("MZW").Range("A4")
.PivotTables("PivotTable24").PivotCache.Refresh
End With
End Sub

Anzeige
AW: Pivot mit VBA aktualisieren
07.10.2016 07:58:54
Ludicla
Danke für die Hilfe
werde gleich mal testen
mfg Ludicla
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Pivot-Tabellen mit VBA aktualisieren


Schritt-für-Schritt-Anleitung

Um eine Pivot-Tabelle in Excel mithilfe von VBA zu aktualisieren, kannst du den folgenden Code verwenden. Dieser Code aktualisiert eine Pivot-Tabelle, nachdem ein SVERWEIS in einem bestimmten Bereich durchgeführt wurde.

Sub auto_open()
    MsgBox "Sverweis wird aktualisiert"
    With Sheets("Zusammenfassung")
        .Visible = True
        .Range("A2153:CF2153").AutoFill Destination:=.Range("A2153:CF12152")
        .Visible = False
    End With

    Dim pvTab As PivotTable
    With Sheets("MZW")
        Set pvTab = .PivotTables(1) 'oder den spezifischen Namen verwenden
        pvTab.PivotCache.Refresh
    End With
End Sub

Stelle sicher, dass der Name der Pivot-Tabelle korrekt ist. Alternativ kannst du auch den Index verwenden, wenn nur eine Pivot-Tabelle auf dem Blatt vorhanden ist.


Häufige Fehler und Lösungen

  1. Bezugsfehler bei der Aktualisierung:

    • Überprüfe die Bereiche, die für AutoFill verwendet werden. Sie müssen exakt übereinstimmen.
    • Beispiel:
      .Range("A2153:CF2153").AutoFill Destination:=.Range("A2153:CF12152")
  2. Pivot-Tabelle nicht sichtbar:

    • Stelle sicher, dass das Tabellenblatt, auf dem die Pivot-Tabelle ist, nicht ausgeblendet ist.
    • Verwende Sheets("MZW").Visible = True vor der Aktualisierung.
  3. Pivot-Tabellen-Referenz:

    • Wenn du mehrere Pivot-Tabellen hast, stelle sicher, dass du die richtige Pivot-Tabelle identifiziert hast. Nutze entweder den Namen oder den Index.

Alternative Methoden

  • Pivot automatisch aktualisieren: Du kannst auch die Option "PivotTable automatisch aktualisieren bei Öffnen der Datei" aktivieren. Dies kannst du in den PivotTable-Optionen finden.

  • Makro für alle Pivot-Tabellen aktualisieren: Wenn du alle Pivot-Tabellen in einer Arbeitsmappe aktualisieren möchtest, verwende folgenden Code:

Sub AllePivotsAktualisieren()
    Dim ws As Worksheet
    Dim pt As PivotTable

    For Each ws In ThisWorkbook.Worksheets
        For Each pt In ws.PivotTables
            pt.RefreshTable
        Next pt
    Next ws
End Sub

Praktische Beispiele

Hier sind zwei Beispiele, wie du die VBA-Skripte anpassen kannst:

  1. Aktualisieren einer spezifischen Pivot-Tabelle:

    Sub AktualisierenPivot()
       Sheets("MZW").PivotTables("PivotTable24").PivotCache.Refresh
    End Sub
  2. Aktualisieren aller Pivot-Tabellen in der aktuellen Arbeitsmappe:

    Sub AllePivotsAktualisieren()
       Dim pt As PivotTable
       For Each pt In ActiveSheet.PivotTables
           pt.RefreshTable
       Next pt
    End Sub

Tipps für Profis

  • Vermeide die Verwendung von .Select und .Activate, um deinen Code effizienter und schneller zu gestalten.
  • Nutze With-Blöcke, um den Code leserlicher zu machen und die Ausführung zu beschleunigen.
  • Teste deinen Code schrittweise, um Fehler schnell zu identifizieren und zu beheben.

FAQ: Häufige Fragen

1. Wie kann ich eine Pivot-Tabelle automatisch aktualisieren, wenn ich Daten ändere? Du kannst VBA verwenden, um die Pivot-Tabelle bei bestimmten Ereignissen, wie dem Ändern von Daten, zu aktualisieren. Füge den Code in das Arbeitsblattmodul ein.

2. Was ist der Unterschied zwischen PivotCache.Refresh und RefreshTable? PivotCache.Refresh aktualisiert die Datenquelle, während RefreshTable die Pivot-Tabelle selbst aktualisiert. In der Regel ist es sinnvoll, beide Methoden zusammen zu verwenden.

3. Kann ich mehrere Pivot-Tabellen gleichzeitig aktualisieren? Ja, du kannst ein Makro erstellen, das alle Pivot-Tabellen in der Arbeitsmappe durchläuft und aktualisiert, wie in den alternativen Methoden beschrieben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige