Anzeigen einer Statusanzeige mit einem Benutzerformular in Excel

Zusammenfassung

Wenn Sie über ein Microsoft Visual Basic for Applications-Makro verfügen, das sehr lange dauert, können Sie dem Benutzer einen Hinweis darauf geben, dass das Makro ordnungsgemäß ausgeführt wird. In diesem Artikel wird beschrieben, wie Sie eine Statusanzeige mit einem Benutzerformular in Microsoft Excel erstellen.

Weitere Informationen

Die Verwendung der hier aufgeführten Informationen, Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionsfähigkeit sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen. Die Mitarbeiter der Microsoft Product Support Services erklären Ihnen gerne die Funktionsweise einer bestimmten Prozedur. Die Mitarbeiter werden diese Beispiele jedoch weder modifizieren, um zusätzliche Funktionalität zu schaffen, noch Prozeduren entwickeln, die auf Ihre spezifischen Bedürfnisse zugeschnitten sind.

Erstellen des Benutzerformulars

Im folgenden Beispiel füllt eine Visual Basic-Unterroutine einen großen Zellbereich mit einer Zufallszahl auf. Der Indikator zeigt, dass das Makro ordnungsgemäß ausgeführt wird.

  1. Öffnen Sie eine neue Arbeitsmappe in Excel.

  2. Klicken Sie in Microsoft Office Excel 2003 und früheren Excel-Versionen auf "Extras", zeigen Sie auf "Makro", und klicken Sie dann auf " Visual Basic-Editor".

    Klicken Sie in Microsoft Office Excel 2007 auf der Registerkarte "Entwicklertools" in der Gruppe "Code" auf Visual Basic.

    Hinweis Führen Sie die folgenden Schritte aus, um die Registerkarte " Entwicklertools " im Menüband anzuzeigen:

    1. Starten Sie Excel 2007, klicken Sie auf die Microsoft Office-Schaltfläche, und klicken Sie dann auf Excel-Optionen.
    2. Klicken Sie im Dialogfeld " Excel-Optionen " auf " Beliebt", und aktivieren Sie dann im Menüband das Kontrollkästchen "Entwicklertools anzeigen" .
  3. Klicken Sie im Menü "Einfügen" auf "UserForm".

  4. Zeichnen eines Bezeichnungssteuerelements im Benutzerformular.

  5. Ändern Sie die folgenden Eigenschaften des Label-Steuerelements in die folgenden Werte: | Eigenschaft| Wert| |---------------|-----------------------------| | Beschriftung| Jetzt wird aktualisiert. Bitte warten...| Hinweis Wenn das Eigenschaftenfenster nicht angezeigt wird, klicken Sie im Menü "Ansicht" auf "Eigenschaftenfenster".

  6. Zeichnen eines Frame-Steuerelements auf dem Benutzerformular.

  7. Ändern Sie die folgenden Eigenschaften des Frame-Steuerelements in die folgenden Werte: | | Wert| |---------|--------------------| | Name FrameProgress|

  8. Zeichnen Eines Bezeichnungssteuerelements auf dem Frame-Steuerelement.

  9. Ändern Sie die folgenden Eigenschaften des Label-Steuerelements in die folgenden Werte: | Eigenschaft| Wert| |----------|---------------------------| | Name | LabelProgress| | BackColor-|& H000000FF&| | SpecialEffect |fmSpecialEffectRaised|

Geben Sie den Makrocode ein.

  1. Doppelklicken Sie auf das Benutzerformular, um das Codefenster für das Benutzerformular zu öffnen.

  2. Geben Sie im Modul den folgenden Code für das UserForm_Activate-Ereignis ein:

    Private Sub UserForm_Activate()
        ' Set the width of the progress bar to 0.
        UserForm1.LabelProgress.Width = 0
    
    ' Call the main subroutine.
        Call Main
    End Sub
    
    
  3. Klicken Sie im Menü „Einfügen“ auf „Modul“.

  4. Geben Sie im Codefenster für das Modul den folgenden Code ein:

    Sub ShowUserForm()
        UserForm1.Show
    End Sub
    
    Sub Main()
        Dim Counter As Integer
        Dim RowMax As Integer, ColMax As Integer
        Dim r As Integer, c As Integer
        Dim PctDone As Single
    
    Application.ScreenUpdating = False
        ' Initialize variables.
        Counter = 1
        RowMax = 100
        ColMax = 25
    
    ' Loop through cells.
        For r = 1 To RowMax
            For c = 1 To ColMax
                'Put a random number in a cell
                Cells(r, c) = Int(Rnd * 1000)
                Counter = Counter + 1
            Next c
    
    ' Update the percentage completed.
            PctDone = Counter / (RowMax * ColMax)
    
    ' Call subroutine that updates the progress bar.
            UpdateProgressBar PctDone
        Next r
        ' The task is finished, so unload the UserForm.
        Unload UserForm1
    End Sub
    
    Sub UpdateProgressBar(PctDone As Single)
        With UserForm1
    
    ' Update the Caption property of the Frame control.
            .FrameProgress.Caption = Format(PctDone, "0%")
    
    ' Widen the Label control.
            .LabelProgress.Width = PctDone * _
                (.FrameProgress.Width - 10)
        End With
    
    ' The DoEvents allows the UserForm to update.
        DoEvents
    End Sub
    
    
  5. Kehren Sie zu Excel zurück.

  6. Zeigen Sie in Excel 2003 und früheren Versionen von Excel im Menü "Extras" auf "Makro", und klicken Sie dann auf "Makros".

    Klicken Sie in Excel 2007 auf der Registerkarte "Entwicklertools" in der Gruppe "Code" auf "Makros".

  7. Klicken Sie im Dialogfeld " Makro " auf "ShowUserForm", und klicken Sie dann auf "Ausführen".

Ein Dialogfeld mit einer roten Statusanzeige wird angezeigt. Die Statusanzeige nimmt zu, wenn die Hauptunterroutine die Zellen auf dem Arbeitsblatt auffüllt.

Die ShowUserForm-Unterroutine zeigt das Benutzerformular an. Die Prozedur, die an das Activate-Ereignis des Benutzerformulars angefügt ist, ruft die Main-Unterroutine auf. Die Hauptunterroutine füllt Zellen mit Zufallszahlen auf. Darüber hinaus ruft die Unterroutine " UpdateProgressBar" die Unterroutine "UpdateProgressBar " auf, mit der das Bezeichnungssteuerelement im Benutzerformular aktualisiert wird.

Hinweis Wenn Sie diese Technik verwenden, dauert das Ausführen der vorgesehenen Aufgaben für das Makro etwas länger.