VBA StatusBar - Hvordan aktivere StatusBar ved hjelp av VBA-kode?

Innholdsfortegnelse

Excel VBA StatusBar

StatusBar er egenskapen til en vba som brukes til å vise statusen til koden som er ferdig eller fullført på tidspunktet for utførelsen, den vises i venstre hjørne av regnearket når en makro kjøres og statusen vises i prosent til brukeren.

Når makroen kjører bak, er det en frustrerende ting å vente uten å vite hvor lang tid det kommer til å ta. Hvis du er på scenen der koden kjører, kan du i det minste beregne tiden den skal ta. Så ideen er å ha en statuslinje som viser prosentandelen av arbeidet hittil, som den nedenfor.

Hva er Application.StatusBar?

Application.StatusBar er egenskapen vi kan bruke i makrokoding for å vise status når makroen kjører bak scenen.

Dette er ikke så vakkert som vår "VBA Progress Bar", men god nok til å vite statusen til makroprosjektet.

Eksempel på å opprette Statuslinje ved hjelp av VBA

Følg trinnene nedenfor for å opprette en statuslinje.

Trinn 1: Først definerer du VBA-variabelen for å finne den sist brukte raden i regnearket.

Kode:

Sub Status_Bar_Progress () Dim LR Som Long End Sub

Trinn 2: Finn den sist brukte raden ved å bruke koden nedenfor.

Kode:

Sub Status_Bar_Progress () Dim LR Like Long LR = Cells (Rows.Count, 1). End (xlUp) .Row End Sub

Trinn 3: Deretter må vi definere variabelen for å holde antall stolper som skal vises.

Kode:

Sub Status_Bar_Progress () Dim LR Like Long LR = Cells (Rows.Count, 1). End (xlUp). Row Dim NumOfBars As Integer End Sub

Dette vil holde hvor mange stolper som har lov til å vises i statuslinjen.

Trinn 4: For denne variabelen, lagre grensen for linjen som 45.

Kode:

Sub Status_Bar_Progress () Dim LR Like Long LR = Cells (Rows.Count, 1). End (xlUp). Row Dim NumOfBars As Integer NumOfBars = 45 End Sub

Trinn 5: Definer to variabler for å holde gjeldende status og prosentandel fullført når makroen kjører.

Kode:

Sub Status_Bar_Progress () Dim LR Like Long LR = Cells (Rows.Count, 1). End (xlUp). Row Dim NumOfBars As Integer NumOfBars = 45 Dim PresentStatus As Integer Dim PercetageCompleted Som Integer End Sub Sub

Trinn 6: For å aktivere statuslinjen, bruk koden nedenfor.

Kode:

Sub Status_Bar_Progress () Dim LR Like 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) & ")" End Sub

Hva dette vil gjøre, vil legge til braketten (() og legge til 45 mellomromstegn før teksten avsluttes med braketten ()).

Utfør koden, og vi kunne se nedenfor i Excel VBA-statuslinjen.

Produksjon:

Trinn 7: Nå må vi inkludere For Next-sløyfen i VBA for å beregne prosentandelen av makroen som er fullført. Definer en variabel for å starte makroen.

Kode:

Sub Status_Bar_Progress () Dim LR Like 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 Så lenge For k = 1 Til LR Neste k End Sub

Trinn 8: Inne i løkken må vi beregne hva "Nåværende status" er. Så for variabelen "PresentStatus", må vi bruke formelen som nedenfor.

Kode:

Sub Status_Bar_Progress () Dim LR Like 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) Next k End Sub

Vi har brukt “ INT ” -funksjonen for å få heltalsverdien som et resultat.

Trinn 9: Nå må vi beregne hva " Prosentvis fullføring " er, slik at vi kan bruke formelen som vist nedenfor.

Kode:

Sub Status_Bar_Progress () Dim LR Like 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 Så lenge For k = 1 Til LR PresentStatus = Int ((k / LR) * NumOfBars) PercetageCompleted = Round (PresentStatus / NumOfBars * 100, 0) Neste k End Sub

I dette tilfellet har vi brukt RUND- funksjonen i excel fordi uansett desimaler, må vi avrunde til nærmeste nullverdi, så RUND med null som argumentet har blitt brukt her.

Trinn 10: Vi har allerede satt inn startbraketten og sluttbraketten til statuslinjen, nå må vi sette inn det oppdaterte resultatet, og det kan gjøres ved å bruke koden nedenfor.

Kode:

Sub Status_Bar_Progress () Dim LR Like 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 så lenge 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" Neste k End Sub

I koden ovenfor har vi satt inn åpningsbraketten “(“ og for å vise fremdriften til makroen, har vi satt inn en rett linje (|) ved hjelp av STRING-funksjonen. Når sløyfen går, vil det ta “ PresentStatus , ”Og de mange rette linjene vil bli satt inn i statuslinjen.

Kode:

Application.StatusBar = "(" & String (PresentStatus, "|")

Deretter må vi legge til mellomrom mellom den ene rette linjen til den andre, så dette vil bli beregnet ved å bruke "NumOfBars" minus "PresentStatus."

Kode:

Application.StatusBar = "(" & String (PresentStatus, "|") & Space (NumOfBars - PresentStatus)

Så lukker vi braketten “).” Deretter har vi kombinert variabelverdien "PercentageCompleted" mens sløyfen kjører 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 å huske

  • Vi kan bare legge til oppgavene som må gjøres i løkken.
  • Du kan legge til oppgavene du må gjøre etter at du har lagt til “Gjør hendelser” -prosedyren.

Interessante artikler...