Excel VBA-statuslinje
StatusBar er egenskaben for en vba, der bruges til at vise status for den kode, der er færdig eller afsluttet på tidspunktet for udførelsen, den vises i venstre hjørne af regnearket, når en makro udføres, og status vises i procent til brugeren.
Når makroen kører bagud, er det en frustrerende ting at vente uden at vide, hvor lang tid det tager. Hvis du er på det tidspunkt, hvor koden kører, kan du i det mindste beregne den tid, det vil tage. Så ideen er at have en statuslinje, der viser procentdelen af arbejde, der er afsluttet hidtil, som den nedenfor.

Hvad er Application.StatusBar?
Application.StatusBar er den egenskab, vi kan bruge til makrokodning for at vise status, når makroen kører bag scenen.
Dette er ikke så smukt som vores "VBA Progress Bar", men god nok til at kende makroprojektets status.

Eksempel på oprettelse af statuslinje vha. VBA
Følg nedenstående trin for at oprette en statuslinje.
Trin 1: Definér først VBA-variablen for at finde den sidst anvendte række i regnearket.
Kode:
Sub Status_Bar_Progress () Dim LR Som Long End Sub

Trin 2: Find den sidst anvendte række ved hjælp af nedenstående kode.
Kode:
Sub Status_Bar_Progress () Dim LR så længe LR = Celler (Rækker.Tælling, 1) .End (xlUp) .Row End Sub

Trin 3: Dernæst skal vi definere variablen for at indeholde antallet af søjler, der skal vises.
Kode:
Understatus_Bar_Progress () Dim LR så længe LR = celler (rækker. Antal, 1). Slut (xlUp). Rad dim NumOfBars som heltal

Dette holder, hvor mange bjælker, der må vises i statuslinjen.
Trin 4: For denne variabel skal du gemme grænsen for bjælken som 45.
Kode:
Understatus_Bar_Progress () Dim LR så lange LR = celler (rækker.Tælling, 1) .End (xlUp) .Redim. NumOfBars som heltal NumOfBars = 45

Trin 5: Definer to flere variabler for at holde den aktuelle status og procentdel afsluttet, når makroen kører.
Kode:
Sub Status_Bar_Progress () Dim LR Så længe LR = Celler (Rækker.Tælling, 1) .End (xlUp) .Row Dim NumOfBars Som Heltal NumOfBars = 45 Dim PresentStatus Som Heltal Dim PercetageFuldført

Trin 6: Brug nedenstående kode for at aktivere statuslinjen.
Kode:
Sub Status_Bar_Progress () Dim LR så længe LR = celler (rækker.Count, 1) .End (xlUp) .Row Dim NumOfBars Som Integer NumOfBars = 45 Dim PresentStatus Som Integer Dim PercetageCompleted As Integer Application.StatusBar = "(" & Space ( NumOfBars) & ")" End Sub

Hvad dette gør, tilføjer parentes (() og tilføjer 45 mellemrumstegn, før teksten afsluttes med lukkende parentes ()).
Udfør koden, og vi kunne se nedenstående i Excel VBA-statuslinjen.
Produktion:

Trin 7: Nu skal vi medtage For Next-sløjfen i VBA for at beregne procentdelen af makroen, der er afsluttet. Definer en variabel for at starte makroen.
Kode:
Sub Status_Bar_Progress () Dim LR så længe LR = celler (rækker.Count, 1) .End (xlUp) .Row Dim NumOfBars Som Integer NumOfBars = 45 Dim PresentStatus Som Integer Dim PercetageCompleted As Integer Application.StatusBar = "(" & Space ( NumOfBars) & ")" Dim k så længe For k = 1 til LR Næste k Afslut sub

Trin 8: Inde i sløjfen skal vi beregne, hvad "nuværende status" er. Så for variablen "PresentStatus" skal vi anvende formlen som nedenfor.
Kode:
Sub Status_Bar_Progress () Dim LR så længe LR = celler (rækker.Count, 1) .End (xlUp) .Row Dim NumOfBars Som Integer NumOfBars = 45 Dim PresentStatus Som Integer Dim PercetageCompleted As Integer Application.StatusBar = "(" & Space ( NumOfBars) & ")" Dim k så længe For k = 1 til LR PresentStatus = Int ((k / LR) * NumOfBars) Næste k End Sub

Vi har brugt “ INT ” -funktionen til at få heltalets værdi som et resultat.
Trin 9: Nu skal vi beregne, hvad " Procentdel afslutning " er, så vi kan anvende formlen som vist nedenfor.
Kode:
Sub Status_Bar_Progress () Dim LR så længe LR = celler (rækker.Count, 1) .End (xlUp) .Row Dim NumOfBars Som Integer NumOfBars = 45 Dim PresentStatus Som Integer Dim PercetageCompleted As Integer Application.StatusBar = "(" & Space ( NumOfBars) & ")" Dim k så længe For k = 1 Til LR PresentStatus = Int ((k / LR) * NumOfBars) PercetageCompleted = Round (PresentStatus / NumOfBars * 100, 0) Næste k End Sub

I dette tilfælde har vi brugt ROUND- funktionen i excel, fordi uanset decimaler skal vi afrunde til nærmeste nulværdi, så ROUND med nul som argumentet er blevet brugt her.
Trin 10: Vi har allerede indsat startbeslaget og slutbeslaget i statuslinjen, nu skal vi indsætte det opdaterede resultat, og det kan gøres ved hjælp af nedenstående kode.
Kode:
Sub Status_Bar_Progress () Dim LR så længe LR = celler (rækker.Count, 1) .End (xlUp) .Row Dim NumOfBars Som Integer NumOfBars = 45 Dim PresentStatus Som Integer Dim PercetageCompleted As Integer Application.StatusBar = "(" & Space ( NumOfBars) & ")" Dim k så længe For k = 1 Til LR PresentStatus = Int ((k / LR) * NumOfBars) PercetageCompleted = Round (PresentStatus / NumOfBars * 100, 0) Application.StatusBar = "(" & String ( PresentStatus, "|") & Space (NumOfBars - PresentStatus) & _ ")" & PercetageCompleted & "% Complete" Næste k Afslut sub
I ovenstående kode har vi indsat åbningsbeslaget “(“ og for at vise makroforløbet har vi indsat en lige linje (|) ved hjælp af STRING-funktionen. Når sløjfen kører, vil den tage “ PresentStatus , ”Og de mange lige linjer vil blive indsat i statuslinjen.
Kode:
Application.StatusBar = "(" & streng (PresentStatus, "|")
Dernæst skal vi tilføje mellemrumstegn mellem den ene lige linje til den anden, så dette beregnes ved hjælp af "NumOfBars" minus "PresentStatus."
Kode:
Application.StatusBar = "(" & String (PresentStatus, "|") & Mellemrum (NumOfBars - PresentStatus)
Derefter lukker vi beslaget “).” Dernæst har vi kombineret variabelværdien "PercentageCompleted", mens loop løber med ordet foran som "% Completed."
Kode:
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
Ting at huske
- Vi kan kun tilføje de opgaver, der skal udføres inden for sløjfen.
- Du kan tilføje de opgaver, du skal udføre efter tilføjelsen af "Do Events" -proceduren.