Microsoft Excel

Excel und VBA: Formeln, Programmierung, Lösungen

Die Excel/VBA-Beispiele

Thema

Fortschrittsanzeige in Statusleiste

Gruppe

Statusleiste

Problem

Wie kann ich in der Statusleiste während des Abarbeitens einer VBA-Routine eine Fortschrittsanzeige anzeigen lassen?

Lösung
Geben Sie den nachfolgenden Code in ein Standardmodul ein und weisen Sie ihn einer Schaltfläche zu.

ClassModule: DieseArbeitsmappe

Private Sub Workbook_BeforeClose(Cancel As Boolean)
   Application.DisplayStatusBar = bln
End Sub

Private Sub Workbook_Open()
   bln = Application.DisplayStatusBar
   Application.DisplayStatusBar = True
End Sub

StandardModule: Modul1

Public bln As Boolean

Sub Fortschritt()
   Dim iCounter As Integer
   Application.DisplayStatusBar = True
   For iCounter = 1 To 10
      StatusLED "Bisher abgearbeitet: ", iCounter / 10
      Application.Wait Now + TimeSerial(0, 0, 1)
   Next iCounter
   Application.StatusBar = False
End Sub

Private Function StatusLED(sMsg As String, sPct As Single)
   Dim iPct As Integer, iReps As Integer
   With WorksheetFunction
      iPct = .Round(sPct, 2) * 100
      iReps = Int(iPct / 10)
      Application.StatusBar = sMsg & .Rept(Chr(14), iReps) & _
         .Rept("*", 10 - iReps) & "  " & iPct & "%"
   End With
End Function