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

Forumthread: Alle Daten aktualisieren während VBA läuft

Alle Daten aktualisieren während VBA läuft
30.07.2015 11:30:40
Simon
Hi Leute,
ich habe eine Frage an euch, da ich am verzweifeln bin. Habe keine große Erfahrungen mit VBA.
Ausgangssituation: Es besteht bereits ein Code (der auch funktioniert), der in einer Exceltabelle die Worksheets durchrotiert. Diese verschiedenen Sheets sind quasi Clons aus anderen Exceldateien welche via Pivot Zugriff auf eine Datenquelle haben.
Das Loopsheet ist quasi eine Demoansicht der anderen Ecxelfiles.
Die Daten sollen sich automatisch aktualisieren, sprich neue Zahlen mittels Pivot ziehen und dann in dem Loop angezeit werden. Wie muss ich den basierenden Code anpassen um dies zu ermöglichen? Bisher habe ich in dem Excel File eingestellt automatische Aktualisierung, diese wird jedoch durch den Loop blockiert.
Aktueller Code lautet:

Sub Start_Klicken()
Dim x As Long
Dim name As String
x = 1
Do While x 

Bitte helft mir :)
Viele Grüße
Simon

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Alle Daten aktualisieren während VBA läuft
30.07.2015 13:46:57
EtoPHG
Hallo Simon,
Keine guten Ideen in Deinem Code:
.Activate zu 99% überflüssig und kontraproduktiv
SendKeys "{F15}" Funktioniert manchmal, aber oft nicht
Application.Wait In diesem Fall völlig überflüssig
und nicht das Aktualisieren blockiert, sondern dein ewiger Loop zwischen 1..4-2..4-2..4...
Probiers so:
Sub Start_Klicken()
Dim ws As Worksheet
Dim ptS As PivotTable
For Each ws In ThisWorkbook.Worksheets
For Each ptS In ws.PivotTables
ptS.RefreshTable
Next ptS
Next ws
End Sub
Gruess Hansueli

Anzeige
AW: Alle Daten aktualisieren während VBA läuft
31.07.2015 16:31:20
Simon
Hi Hansueli,
vielen Dank für deine Antwort. Habe dein Code eingebaut, aber jetzt klappt der Präsentationsmodus gar nicht mehr. Es sollen ja in dem Excel alle Sheets durchrotiert werden und ein paar Sekunden lang eingeblendet (Präsentation). Zusätzlich sollen die Datenquellen aktualisiert werden. Damit ich nicht jedesmal das Makro stoppen muss, um manuel zu aktualisieren.
Weiteren TIpp?
Viele Grüße

Anzeige
Powerpoint statt Excel für Präsentation
03.08.2015 07:52:23
EtoPHG
Hallo Simon,
Jetzt versteh ich langsam, was du machen willst. Ich frage mich nur, warum willst du das (v.a. auch mit deinen VBA-Kentnissen) mit Excel lösen?
Dafür ist doch PowerPoint wie geschaffen!
Wenn das nicht in Frage kommt, wo liegt denn der Vorteil deines Ansatzes? Warum soll der Anwender die aktualisierten Pivottabellen nicht selbst (z.B. über die Register) auswählen und sie solange betrachten können, wie er/sie mag? Warum 5 Sekunden und dann zur nächsten Ansicht?
Gruess Hansueli

Anzeige
AW: Powerpoint statt Excel für Präsentation
03.08.2015 09:32:08
Simon
Hi Hansueli,
ok nochmal zur Ausgangslage, es ist auch wirklich ein wenig kompliziert. Es gibt verschiedene Excelberichte die seperat abgespeichert sind und sich automatisiert ihre Daten aus einer Pivottabelle ziehen. Dies klappt wunderbar, auch ohne VBA. Ein Sheet einer jeder (Berichts)Exceldatei wird dann in ein neues Excel kopiert, sodass diese Datei das Ergebnisshart jeder einzelnen Excel hat. In dieser Datei sind dann alle Ergebnisse der Berichte gespeichert. Diese bekommen täglich neue Daten. Die Datei soll dann als "Präsentationsmodus" auf einem TV angezeigt werden und durch alle "sheets" rotieren, sodass alle "Ergebnisse" angezeigt werden. Da täglich neue Daten hinzukommen, soll sich die Datei automatisch aktualisieren, sprich neue Daten aus den Pivottabellen ziehen.
Stand jetzt ist, dass mit dem besagten Code der "Präsentationsmodus" funktioniert. Jedoch wird die automatisch Aktualisierung der Excelsheets durch das VBA Skript geblogt. Kann ich dies irgendwie umgehen?
ICh hoffe es ist jetzt klarer was ich meine.
Viele Grüße

Anzeige
AW: Powerpoint statt Excel für Präsentation
03.08.2015 12:19:44
EtoPHG
Hallo Simon,
Du brauchst:
a) einen Startknopf mit der Zuweisung des Makros Start_Klicken und einen Beendenknopf mit der Zuweisung Stop_Klicken und folgenden Code in einem Modul:
Option Explicit
' Nächste Pivottabelle anzeigen, 0 = Stoppt Präsentation
Dim dNextStartTime As Double
' Anzeigedauer in Sekunden von Blättern mit Pivottabellen
Const iWaitLoopSecnds As Integer = 10
Sub Start_Klicken()
If dNextStartTime = 0 Then
dNextStartTime = Now()
ShowWS
End If
End Sub
Sub Stop_Klicken()
If dNextStartTime = 0 Then Exit Sub
On Error Resume Next
Application.OnTime EarliestTime:=dNextStartTime, Procedure:="ShowWS", Schedule:=False
dNextStartTime = 0
On Error GoTo 0
End Sub
Sub ShowWS()
Static lWSIndex As Long
Dim pts As PivotTable
If dNextStartTime = 0 Then Exit Sub
If lWSIndex = 0 Or lWSIndex = ThisWorkbook.Worksheets.Count Then
lWSIndex = getNextWSix(1)
Else
lWSIndex = getNextWSix(lWSIndex + 1)
End If
If lWSIndex = 0 Then lWSIndex = getNextWSix(1)
With ThisWorkbook.Worksheets(lWSIndex)
For Each pts In .PivotTables
With pts.PivotCache
.Refresh
End With
Next pts
.Activate
End With
dNextStartTime = Now + TimeSerial(0, 0, iWaitLoopSecnds)
Application.OnTime EarliestTime:=dNextStartTime, Procedure:="ShowWS"
End Sub
Function getNextWSix(lWSIndex As Long) As Long
Dim lIx As Long
For lIx = lWSIndex To ThisWorkbook.Worksheets.Count
If ThisWorkbook.Worksheets(lIx).PivotTables.Count > 0 Then
getNextWSix = lIx
Exit For
End If
Next lIx
End Function
Start klicken und jederzeit auf das Blatt mit den Buttons wechseln und Beenden klicken.
Gruess Hansueli

Anzeige
AW: Powerpoint statt Excel für Präsentation
03.08.2015 17:57:34
Simon
Hi Hansueli,
vielen Dank!!! Es läuft!!!! Habe noch zwei Kleinigkeiten angepasst, da die Pivottables nicht in der Präsentationsexcel, sondern in einer anderen Datei liegt. Aber sonst läuft. Tausend dank.
Simon
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Daten während VBA-Abläufen in Excel automatisch aktualisieren


Schritt-für-Schritt-Anleitung

Um die Daten in Excel während der Ausführung eines VBA-Skripts automatisch zu aktualisieren, kannst Du folgenden Schritten folgen:

  1. Öffne das Excel-Dokument, in dem Du die Daten aktualisieren möchtest.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul hinzu:
    • Klicke mit der rechten Maustaste auf "VBAProject (Dein Dokument)".
    • Wähle "Einfügen" > "Modul".
  4. Kopiere und füge den folgenden VBA-Code ein:

    Option Explicit
    Dim dNextStartTime As Double
    Const iWaitLoopSecnds As Integer = 10
    
    Sub Start_Klicken()
        If dNextStartTime = 0 Then
            dNextStartTime = Now()
            ShowWS
        End If
    End Sub
    
    Sub Stop_Klicken()
        If dNextStartTime = 0 Then Exit Sub
        On Error Resume Next
        Application.OnTime EarliestTime:=dNextStartTime, Procedure:="ShowWS", Schedule:=False
        dNextStartTime = 0
        On Error GoTo 0
    End Sub
    
    Sub ShowWS()
        Static lWSIndex As Long
        Dim pts As PivotTable
        If dNextStartTime = 0 Then Exit Sub
        If lWSIndex = 0 Or lWSIndex = ThisWorkbook.Worksheets.Count Then
            lWSIndex = getNextWSix(1)
        Else
            lWSIndex = getNextWSix(lWSIndex + 1)
        End If
        If lWSIndex = 0 Then lWSIndex = getNextWSix(1)
        With ThisWorkbook.Worksheets(lWSIndex)
            For Each pts In .PivotTables
                With pts.PivotCache
                    .Refresh
                End With
            Next pts
            .Activate
        End With
        dNextStartTime = Now + TimeSerial(0, 0, iWaitLoopSecnds)
        Application.OnTime EarliestTime:=dNextStartTime, Procedure:="ShowWS"
    End Sub
    
    Function getNextWSix(lWSIndex As Long) As Long
        Dim lIx As Long
        For lIx = lWSIndex To ThisWorkbook.Worksheets.Count
            If ThisWorkbook.Worksheets(lIx).PivotTables.Count > 0 Then
                getNextWSix = lIx
                Exit For
            End If
        Next lIx
    End Function
  5. Füge Schaltflächen für Start und Stopp hinzu:
    • Gehe zurück zu Deinem Excel-Blatt, wähle "Entwicklertools" > "Einfügen" und füge zwei Schaltflächen hinzu.
    • Weise der ersten Schaltfläche das Makro Start_Klicken und der zweiten das Makro Stop_Klicken zu.

Häufige Fehler und Lösungen

  • Problem: Die Daten werden nicht aktualisiert.

    • Lösung: Überprüfe, ob Du die Pivot-Tabellen korrekt referenziert hast und ob sie tatsächlich Daten enthalten.
  • Problem: Präsentationsmodus funktioniert nicht.

    • Lösung: Stelle sicher, dass der ShowWS-Prozess korrekt aktiviert wird und dass Du den richtigen Anzeigerhythmus für die Blätter eingestellt hast.

Alternative Methoden

Falls Du mit VBA nicht vertraut bist, kannst Du auch die Excel-Daten aktualisieren Makros nutzen, um Daten manuell zu aktualisieren. Gehe hierzu auf "Daten" > "Alle aktualisieren" oder nutze die Funktion "Aktualisieren" für spezifische Tabellen.


Praktische Beispiele

  1. Aktualisieren einer bestimmten Pivot-Tabelle:

    Sub AktualisierePivotTabelle()
       Dim pt As PivotTable
       Set pt = ThisWorkbook.Worksheets("Tabelle1").PivotTables("PivotTabelle1")
       pt.RefreshTable
    End Sub
  2. Automatische Aktualisierung im Präsentationsmodus: Um sicherzustellen, dass Deine Präsentation reibungslos läuft, nutze den oben beschriebenen Code. Der Präsentationsmodus wird durch die Rotation der Blätter unterstützt.


Tipps für Profis

  • Nutze Application.ScreenUpdating = False am Anfang Deines Makros, um die Ansicht zu aktualisieren und die Performance zu verbessern.
  • Vergiss nicht, am Ende Deines Codes Application.ScreenUpdating = True zu setzen, um die Ansicht wieder zu aktivieren.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine Daten immer aktuell sind? Verwende den VBA-Code zum Aktualisieren Deiner Pivot-Tabellen, damit die neuesten Daten während der Präsentation angezeigt werden.

2. Kann ich die Aktualisierungsintervalle anpassen? Ja, ändere den Wert in Const iWaitLoopSecnds zu der gewünschten Anzahl an Sekunden für die Anzeigedauer.

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