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.
Öffnen Sie eine neue Arbeitsmappe in Excel.
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:
- Starten Sie Excel 2007, klicken Sie auf die Microsoft Office-Schaltfläche, und klicken Sie dann auf Excel-Optionen.
- Klicken Sie im Dialogfeld " Excel-Optionen " auf " Beliebt", und aktivieren Sie dann im Menüband das Kontrollkästchen "Entwicklertools anzeigen" .
Klicken Sie im Menü "Einfügen" auf "UserForm".
Zeichnen eines Bezeichnungssteuerelements im Benutzerformular.
Ä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".
Zeichnen eines Frame-Steuerelements auf dem Benutzerformular.
Ändern Sie die folgenden Eigenschaften des Frame-Steuerelements in die folgenden Werte: | | Wert| |---------|--------------------| | Name FrameProgress|
Zeichnen Eines Bezeichnungssteuerelements auf dem Frame-Steuerelement.
Ä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.
Doppelklicken Sie auf das Benutzerformular, um das Codefenster für das Benutzerformular zu öffnen.
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
Klicken Sie im Menü „Einfügen“ auf „Modul“.
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
Kehren Sie zu Excel zurück.
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".
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.