Excel VBA StatusBar
Die Statusleiste ist die Eigenschaft einer vba, mit der der Status des zum Zeitpunkt der Ausführung abgeschlossenen oder abgeschlossenen Codes angezeigt wird. Sie wird in der linken Ecke des Arbeitsblatts angezeigt, wenn ein Makro ausgeführt wird, und der Status wird in Prozent angezeigt an den Benutzer.
Wenn das Makro zurückläuft, ist es frustrierend zu warten, ohne zu wissen, wie lange es dauern wird. Wenn Sie sich in der Phase befinden, in der der Code ausgeführt wird, können Sie zumindest die Zeit berechnen, die dafür benötigt wird. Die Idee ist also, eine Statusleiste zu haben, die den Prozentsatz der bisher abgeschlossenen Arbeiten anzeigt, wie die folgende.

Was ist Application.StatusBar?
Application.StatusBar ist die Eigenschaft, die wir bei der Makrocodierung verwenden können, um den Status anzuzeigen, wenn das Makro hinter den Kulissen ausgeführt wird.
Dies ist nicht so schön wie unsere „VBA Progress Bar“, aber gut genug, um den Status des Makroprojekts zu kennen.

Beispiel zum Erstellen einer Statusleiste mit VBA
Führen Sie die folgenden Schritte aus, um eine Statusleiste zu erstellen.
Schritt 1: Definieren Sie zunächst die VBA-Variable, um die zuletzt verwendete Zeile im Arbeitsblatt zu finden.
Code:
Sub Status_Bar_Progress () Dim LR As Long End Sub

Schritt 2: Suchen Sie die zuletzt verwendete Zeile mit dem folgenden Code.
Code:
Sub Status_Bar_Progress () Dim LR As Long LR = Zellen (Rows.Count, 1) .End (xlUp) .Row End Sub

Schritt 3: Als nächstes müssen wir die Variable definieren, die die Anzahl der anzuzeigenden Balken enthält.
Code:
Sub Status_Bar_Progress () Dim LR As Long LR = Zellen (Rows.Count, 1) .End (xlUp) .Row Dim NumOfBars As Integer End Sub

Hiermit wird festgelegt, wie viele Balken in der Statusleiste angezeigt werden dürfen.
Schritt 4: Speichern Sie für diese Variable das Limit des Balkens als 45.
Code:
Sub Status_Bar_Progress () Dim LR As Long LR = Zellen (Rows.Count, 1) .End (xlUp) .Row Dim NumOfBars As Integer NumOfBars = 45 End Sub

Schritt 5: Definieren Sie zwei weitere Variablen, um den aktuellen Status und den Prozentsatz beizubehalten, der abgeschlossen ist, wenn das Makro ausgeführt wird.
Code:
Sub Status_Bar_Progress () Dim LR As Long LR = Zellen (Rows.Count, 1) .End (xlUp) .Row Dim NumOfBars As Integer NumOfBars = 45 Dim PresentStatus As Integer Dim PercetageCompleted As Integer End Sub

Schritt 6: Um die Statusleiste zu aktivieren, verwenden Sie den folgenden Code.
Code:
Sub Status_Bar_Progress () Dim LR As Long LR = Zellen (Rows.Count, 1) .End (xlUp) .Row Dim NumOfBars As Integer NumOfBars = 45 Dim PresentStatus As Integer Dim PercetageCompleted As Integer Application.StatusBar = "(" & Space ( NumOfBars) & ")" End Sub

In diesem Fall wird die Klammer (() und 45 Leerzeichen hinzugefügt, bevor der Text mit der schließenden Klammer () beendet wird.
Führen Sie den Code aus, und wir können das Folgende in der Excel VBA-Statusleiste sehen.
Ausgabe:

Schritt 7: Jetzt müssen wir die For Next-Schleife in VBA aufnehmen, um den Prozentsatz des abgeschlossenen Makros zu berechnen. Definieren Sie eine Variable, um das Makro zu starten.
Code:
Sub Status_Bar_Progress () Dim LR As Long LR = Zellen (Rows.Count, 1) .End (xlUp) .Row Dim NumOfBars As Integer NumOfBars = 45 Dim PresentStatus As Integer Dim PercetageCompleted As Integer Application.StatusBar = "(" & Space ( NumOfBars) & ")" Dim k As Long For k = 1 To LR Next k End Sub

Schritt 8: Innerhalb der Schleife müssen wir den „aktuellen Status“ berechnen. Für die Variable "PresentStatus" müssen wir also die folgende Formel anwenden.
Code:
Sub Status_Bar_Progress () Dim LR As Long LR = Zellen (Rows.Count, 1) .End (xlUp) .Row Dim NumOfBars As Integer NumOfBars = 45 Dim PresentStatus As Integer Dim PercetageCompleted As Integer Application.StatusBar = "(" & Space ( NumOfBars) & ")" Dim k As Long For k = 1 To LR PresentStatus = Int ((k / LR) * NumOfBars) Next k End Sub

Wir haben die Funktion " INT " verwendet, um den ganzzahligen Wert als Ergebnis zu erhalten.
Schritt 9: Nun müssen wir den „ Prozentsatz der Fertigstellung “ berechnen , damit wir die Formel wie unten gezeigt anwenden können.
Code:
Sub Status_Bar_Progress() Dim LR As Long LR = Cells(Rows.Count, 1).End(xlUp).Row Dim NumOfBars As Integer NumOfBars = 45 Dim PresentStatus As Integer Dim PercetageCompleted As Integer Application.StatusBar = "(" & Space(NumOfBars) & ")" Dim k As Long For k = 1 To LR PresentStatus = Int((k / LR) * NumOfBars) PercetageCompleted = Round(PresentStatus / NumOfBars * 100, 0) Next k End Sub

In this case, we have used the ROUND function in excel because whatever the decimal places, we need to round to the nearest zero value, so ROUND with zero as the argument has been used here.
Step 10: We have already inserted the starting bracket and end bracket to the status bar, now we need to insert the updated result, and it can be done by using the below code.
Code:
Sub Status_Bar_Progress() Dim LR As Long LR = Cells(Rows.Count, 1).End(xlUp).Row Dim NumOfBars As Integer NumOfBars = 45 Dim PresentStatus As Integer Dim PercetageCompleted As Integer Application.StatusBar = "(" & Space(NumOfBars) & ")" Dim k As Long For k = 1 To LR PresentStatus = Int((k / LR) * NumOfBars) PercetageCompleted = Round(PresentStatus / NumOfBars * 100, 0) Application.StatusBar = "(" & String(PresentStatus, "|") & Space(NumOfBars - PresentStatus) & _") " & PercetageCompleted & "% Complete" Next k End Sub
In the above code, we have inserted the opening bracket “(“ and to show the progress of the macro, we have inserted a straight line (|) by using the STRING function. When the loop is running, it will take the “PresentStatus,” and those many straight lines will be inserted in the status bar.
Code:
Application.StatusBar = "(" & String(PresentStatus, "|")
Next, we need to add space characters between one straight line to the other, so this will be calculated by using “NumOfBars” minus “PresentStatus.”
Code:
Application.StatusBar = "(" & String(PresentStatus, "|") & Space(NumOfBars - PresentStatus)
Then we close out the bracket “).” Next, we have combined the “PercentageCompleted” variable value while the loop is running with the word in front of it as “% Completed.”
Code:
Application.StatusBar = "(" & String(PresentStatus, "|") & Space(NumOfBars - PresentStatus)& _") " & PercetageCompleted & "% Complete"
When the code is running, we allow the user to access the worksheet, so we need to add “Do Events.”
Code:
Sub Status_Bar_Progress() Dim LR As Long LR = Cells(Rows.Count, 1).End(xlUp).Row Dim NumOfBars As Integer NumOfBars = 45 Dim PresentStatus As Integer Dim PercetageCompleted As Integer Application.StatusBar = "(" & Space(NumOfBars) & ")" Dim k As Long For k = 1 To LR PresentStatus = Int((k / LR) * NumOfBars) PercetageCompleted = Round(PresentStatus / NumOfBars * 100, 0) Application.StatusBar = "(" & String(PresentStatus, "|") & Space(NumOfBars - PresentStatus) & _ ") " & PercetageCompleted & "% Complete" DoEvents Next k End Sub
Step 11: After adding “Do Events,” we can write the codes that need to be executed here.
For example, I want to insert serial numbers to the cells, so I will write code as below.’
Code:
Sub Status_Bar_Progress() Dim LR As Long LR = Cells(Rows.Count, 1).End(xlUp).Row Dim NumOfBars As Integer NumOfBars = 45 Dim PresentStatus As Integer Dim PercetageCompleted As Integer Application.StatusBar = "(" & Space(NumOfBars) & ")" Dim k As Long For k = 1 To LR PresentStatus = Int((k / LR) * NumOfBars) PercetageCompleted = Round(PresentStatus / NumOfBars * 100, 0) Application.StatusBar = "(" & String(PresentStatus, "|") & Space(NumOfBars - PresentStatus) & _") " & PercetageCompleted & "% Complete" DoEvents Cells(k, 1).Value = k 'You can add your code here Next k End Sub
Step 12: Before we come out of the loop, we need to add one more thing, i.e., If the loop near the last used row in the worksheet then we need to make the status bar as normal.
Code:
Sub Status_Bar_Progress() Dim LR As Long LR = Cells(Rows.Count, 1).End(xlUp).Row Dim NumOfBars As Integer NumOfBars = 45 Dim PresentStatus As Integer Dim PercetageCompleted As Integer Application.StatusBar = "(" & Space(NumOfBars) & ")" Dim k As Long For k = 1 To LR PresentStatus = Int((k / LR) * NumOfBars) PercetageCompleted = Round(PresentStatus / NumOfBars * 100, 0) Application.StatusBar = "(" & String(PresentStatus, "|") & Space(NumOfBars - PresentStatus) & _") " & PercetageCompleted & "% Complete" DoEvents Cells(k, 1).Value = k 'You can add your code here 'You can Add your code here 'You can Add your code here 'You can add your code here 'You can add your code here 'You can add your code here If k = LR Then Application.StatusBar = False Next k End Sub
Ok, we are done with coding. As you execute the code here, you can see the status bar updating its percentage completion status.
Output:

Below is the code for you.
Code:
Sub Status_Bar_Progress() Dim LR As Long LR = Cells(Rows.Count, 1).End(xlUp).Row Dim NumOfBars As Integer NumOfBars = 45 Dim PresentStatus As Integer Dim PercetageCompleted As Integer Application.StatusBar = "(" & Space(NumOfBars) & ")" Dim k As Long For k = 1 To LR PresentStatus = Int((k / LR) * NumOfBars) PercetageCompleted = Round(PresentStatus / NumOfBars * 100, 0) Application.StatusBar = "(" & String(PresentStatus, "|") & Space(NumOfBars - PresentStatus) & _") " & PercetageCompleted & "% Complete" DoEvents Cells(k, 1).Value = k 'You can add your code here 'You can Add your code here 'You can Add your code here 'You can add your code here 'You can add your code here 'You can add your code here If k = LR Then Application.StatusBar = False Next k End Sub
Dinge, an die man sich erinnern sollte
- Wir können nur die Aufgaben hinzufügen, die innerhalb der Schleife ausgeführt werden müssen.
- Sie können die Aufgaben hinzufügen, die Sie nach dem Hinzufügen der Prozedur "Ereignisse ausführen" ausführen müssen.