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

Forumthread: Excel VBA Fortschrittsanzeige

Excel VBA Fortschrittsanzeige
05.03.2016 14:52:13
Claudio
Hallo miteinander
Nachstehende Funktion dauert bei ca. 100 Sheets sehr lange (ca 1-2min) bis sie durch ist. Ich bastle schon lange an einer Progressbar, bekomme diese mit sheets bzw mittels dieser funktion nicht zum laufen. hat da jemand einen hilfreichen tipp?
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Public Sub Fusszeile()
Dim sh As Object
For Each sh In Sheets
With sh.PageSetup 'Schriftgroesse=8, Schriftart=Calibri, Farbe= KD4D4D4 (hellgrau)
.LeftFooter = "&8&""Calibri""&8&KD4D4D4" & "&P" & " von " & "&N"
.CenterFooter = "&8&""Calibri""&8&KD4D4D4" & "&A" & Chr(13) & "bla Sytems"
.RightFooter = "&8&""Calibri""&8&KD4D4D4" & Worksheets("Deckblatt").Range("J27")
End With
Next
End Sub
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA Fortschrittsanzeige
05.03.2016 14:57:39
Claudio
Userbild
Userbild

AW: Excel VBA Fortschrittsanzeige
06.03.2016 16:51:46
Fennek
Hallo,
es mag zwar viel weniger 'sophisticated' sein, aber u den Fortschritt eines Makros zu verfolgen reicht:
Der Schleifenindex ist i
Application.statusbar = i
An Ende auf 'false' oder "" setzen.
Mfg
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Fortschrittsanzeige in Excel VBA erstellen


Schritt-für-Schritt-Anleitung

Um eine Fortschrittsanzeige in Excel VBA zu erstellen, kannst du die folgende Methode verwenden. Diese Technik zeigt den Fortschritt eines Makros an, während es durch eine Schleife läuft.

  1. Öffne den VBA-Editor in Excel mit ALT + F11.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.

  3. Kopiere und füge den folgenden Code ein:

    Public Sub Fortschrittsanzeige()
       Dim sh As Object
       Dim i As Integer
       Dim totalSheets As Integer
    
       totalSheets = ThisWorkbook.Sheets.Count
    
       For i = 1 To totalSheets
           Set sh = ThisWorkbook.Sheets(i)
           ' Hier kannst du deine gewünschten Änderungen am Blatt vornehmen
    
           ' Fortschritt anzeigen
           Application.StatusBar = "Verarbeite Blatt " & i & " von " & totalSheets
       Next i
    
       ' Statusleiste zurücksetzen
       Application.StatusBar = False
    End Sub
  4. Führe das Makro aus: Drücke F5 oder gehe zurück zu Excel und führe das Makro über Entwicklertools > Makros aus.

Dieser Code zeigt dir den Fortschritt in der Statusleiste an. Wenn du den Fortschritt in Prozent anzeigen möchtest, kannst du die Ausgabe in der Statusleiste anpassen.


Häufige Fehler und Lösungen

  • Fehler: "Method 'Sheets' of object '_Workbook' failed"

    • Lösung: Stelle sicher, dass alle Blätter vorhanden sind und kein Blatt geschützt ist.
  • Fehler: Statusleiste bleibt leer

    • Lösung: Überprüfe, ob der Code innerhalb einer Schleife korrekt implementiert ist.

Alternative Methoden

Falls du eine visuellere Form der Fortschrittsanzeige bevorzugst, kannst du einen Fortschrittsbalken in einem UserForm erstellen:

  1. Erstelle ein neues UserForm.
  2. Füge eine Label-Steuerelement und ein Frame hinzu, das als Fortschrittsbalken dient.
  3. Verwende den folgenden Code, um den Fortschritt zu aktualisieren:

    For i = 1 To totalSheets
       ' Hier deine Logik
       Fortschrittsbalken.Width = (i / totalSheets) * MaxWidth
       DoEvents ' Ermöglicht das Aktualisieren des UserForms
    Next i

Praktische Beispiele

Ein einfaches Beispiel für eine Fortschrittsanzeige ist die Anpassung der Fußzeile in mehreren Blättern:

Public Sub FusszeileMitFortschritt()
    Dim sh As Object
    Dim i As Integer
    Dim totalSheets As Integer

    totalSheets = ThisWorkbook.Sheets.Count

    For i = 1 To totalSheets
        Set sh = ThisWorkbook.Sheets(i)
        With sh.PageSetup
            .LeftFooter = "Seite " & i & " von " & totalSheets
        End With

        ' Fortschritt anzeigen
        Application.StatusBar = "Verarbeite Blatt " & i & " von " & totalSheets
    Next i

    Application.StatusBar = False
End Sub

Tipps für Profis

  • Verwende eine UserForm, um eine ansprechendere Fortschrittsanzeige zu erstellen, anstelle die Statusleiste zu verwenden.
  • Experimentiere mit verschiedenen Designs für den Fortschrittsbalken, um ihn ansprechend zu gestalten.
  • Vermeide lange Makros, indem du den Code in kleinere Subroutinen aufteilst, die jeweils einen Fortschrittsbalken aktualisieren.

FAQ: Häufige Fragen

1. Wie kann ich den Fortschritt als Prozentsatz anzeigen?
Du kannst den Fortschritt in Prozent so anpassen:

Application.StatusBar = "Fortschritt: " & Format(i / totalSheets, "0%")

2. Funktioniert dies in allen Excel-Versionen?
Ja, die grundlegenden Funktionen für die Fortschrittsanzeige sind in den meisten modernen Excel-Versionen verfügbar, jedoch kann die Benutzeroberfläche in älteren Versionen unterschiedlich sein.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige