Excel VBA -tilarivi
StatusBar on vba: n ominaisuus, jota käytetään näyttämään valmiiden tai valmiiden koodien tila suorituksen yhteydessä. Se näkyy laskentataulukon vasemmassa reunassa, kun makro suoritetaan, ja tila näytetään prosentteina käyttäjälle.
Kun makro on jäljessä, on turhauttavaa odottaa tietämättä kuinka kauan se kestää. Jos olet vaiheessa, jossa koodi on käynnissä, voit ainakin laskea sen kuluvan ajan. Joten ajatuksena on, että tilapalkki näyttää työn prosenttiosuuden tähän mennessä, kuten alla oleva.

Mikä on Application.StatusBar?
Application.StatusBar on ominaisuus, jota voimme käyttää makrokoodauksessa näyttämään tilan, kun makro on käynnissä kohtauksen takana.
Tämä ei ole niin kaunis kuin “VBA Progress Bar”, mutta tarpeeksi hyvä tuntemaan makroprojektin tilan.

Esimerkki StatusBarin luomisesta VBA: n avulla
Luo tilarivi noudattamalla seuraavia ohjeita.
Vaihe 1: Määritä ensin VBA-muuttuja viimeisen käytetyn rivin löytämiseksi laskentataulukosta.
Koodi:
Sub Status_Bar_Progress () Hämärä LR kuin pitkä loppu Sub

Vaihe 2: Etsi viimeksi käytetty rivi alla olevan koodin avulla.
Koodi:
Sub Status_Bar_Progress () Dim LR As Long LR = Solut (Rivit.Määrä, 1) .End (xlUp) .Rivin loppu

Vaihe 3: Seuraavaksi meidän on määriteltävä muuttuja näytettävien palkkien lukumäärän pitämiseksi.
Koodi:
Sub Status_Bar_Progress () Dim LR As Long LR = Solut (Rivit.Määrä, 1) .End (xlUp) .Rivi Dim NumOfBars kuin kokonaisloppu Sub

Tämä pitää sisällään, kuinka monta palkkia saa näkyä tilarivillä.
Vaihe 4: Tallenna tälle muuttujalle palkin rajaksi 45.
Koodi:
Sub Status_Bar_Progress () Dim LR As Long LR = Solut (Rivit.Määrä, 1) .End (xlUp) .Rivi Dim NumOfBars kokonaislukuna NumOfBars = 45 loppuala

Vaihe 5: Määritä vielä kaksi muuttujaa pitämään nykyinen tila ja prosenttiosuus valmiina makron ollessa käynnissä.
Koodi:
Sub Status_Bar_Progress () Dim LR As Long LR = Solut (Rivit.Määrä, 1) .End (xlUp) .Rivi Dim NumOfBars kuten kokonaisluku NumOfBars = 45 Dim PresentStatus kuin kokonaisluku Dim Percetage

Vaihe 6: Ota tilarivi käyttöön alla olevan koodin avulla.
Koodi:
Sub Status_Bar_Progress () Dim LR As Long LR = Solut (Rivit.Määrä, 1) .End (xlUp) .Rivi Dim NumOfBars kuten kokonaisluku NumOfBars = 45 Dim PresentStatus As Integer Dim PercetageCompleted kuin kokonaisluku Application.StatusBar = "(" & Väli ( NumOfBars) & ")" End Sub

Se, mitä tämä tekee, lisää hakasulkeen (() ja lisää 45 välilyöntiä ennen tekstin päättymistä sulkeella ()).
Suorita koodi, ja voimme nähdä alla olevan Excelin VBA-tilarivillä.
Tuotos:

Vaihe 7: Nyt meidän on sisällytettävä For Next -silmukka VBA: hon laskemaan suoritetun makron prosenttiosuus. Määritä muuttuja makron aloittamiseksi.
Koodi:
Sub Status_Bar_Progress () Dim LR As Long LR = Cells (Rows.Count, 1) .End (xlUp) .Rivi Dim NumOfBars As Integer NumOfBars = 45 Dim PresentStatus As Integer Dim PercetageCompleted as Integer Application.StatusBar = "(" & Väli ( NumOfBars) & ")" Dim k niin kauan kuin k = 1 LR: lle Seuraava k End Sub

Vaihe 8: Silmukan sisällä meidän on laskettava, mikä "nykyinen tila" on. Joten muuttujalle “PresentStatus” meidän on sovellettava kaavaa kuten alla.
Koodi:
Sub Status_Bar_Progress () Dim LR As Long LR = Solut (Rivit.Määrä, 1) .End (xlUp) .Rivi Dim NumOfBars kuten kokonaisluku NumOfBars = 45 Dim PresentStatus kuin kokonaislämpö Dim PercetageCompleted kuin kokonaisluku Application.StatusBar = "(" & Väli ( NumOfBars) & ")" Dim k niin kauan kuin k = 1 LR PresentStatus = Int ((k / LR) * NumOfBars) Seuraava k End Sub

Olemme käyttäneet “ INT ” -toimintoa saadaksesi kokonaisluvun tuloksena.
Vaihe 9: Nyt meidän on laskettava, mikä prosenttiosuus on valmis , jotta voimme soveltaa kaavaa alla olevan kuvan mukaisesti.
Koodi:
Sub Status_Bar_Progress () Dim LR As Long LR = Solut (Rivit.Määrä, 1) .End (xlUp) .Rivi Dim NumOfBars kuin kokonaisluku NumOfBars = 45 Dim PresentStatus As Integer Dim PercetageCompleted kuin kokonaisluku Application.StatusBar = "(" & Space ( NumOfBars) & ")" Dim k niin kauan kuin k = 1 LR PresentStatus = Int ((k / LR) * NumOfBars) PercetageCompleted = Round (PresentStatus / NumOfBars * 100, 0) Seuraava k End Sub

Tässä tapauksessa olemme käyttäneet ROUND- funktiota excel-sovelluksessa, koska desimaaleista riippumatta meidän on pyöristettävä lähimpään nolla-arvoon, joten tässä on käytetty argumenttia ROUND with zero.
Vaihe 10: Olemme jo lisänneet aloitus- ja päätykannattimen tilariville, nyt meidän on lisättävä päivitetty tulos, ja se voidaan tehdä käyttämällä alla olevaa koodia.
Koodi:
Sub Status_Bar_Progress () Dim LR As Long LR = Solut (Rivit.Määrä, 1) .End (xlUp) .Rivi Dim NumOfBars kuten kokonaisluku NumOfBars = 45 Dim PresentStatus kuin kokonaislämpö Dim PercetageCompleted kuin kokonaisluku Application.StatusBar = "(" & Väli ( NumOfBars) & ")" Dim k niin kauan kuin k = 1 LR PresentStatus = Int ((k / LR) * NumOfBars) PercetageCompleted = Round (PresentStatus / NumOfBars * 100, 0) Application.StatusBar = "(" & String ( PresentStatus, "|") & välilyönti (NumOfBars - PresentStatus) & _ ")" & PercetageCompleted & "% Complete" Seuraava k End Sub
Yllä olevaan koodiin olemme lisänneet avaavan sulun "(" ja makron etenemisen osoittamiseksi olemme lisänneet suoran (|) käyttämällä STRING-toimintoa. Kun silmukka on käynnissä, se vie " PresentStatus " , Ja nämä monet suorat viivat lisätään tilariville.
Koodi:
Application.StatusBar = "(" & String (PresentStatus, "|")
Seuraavaksi meidän on lisättävä välilyöntejä yhden suoran väliin toiseen, joten tämä lasketaan käyttämällä ”NumOfBars” - miinus “PresentStatus”.
Koodi:
Application.StatusBar = "(" & String (PresentStatus, "|") & välilyönti (NumOfBars - PresentStatus)
Sitten sulkemme kannattimen ”).” Seuraavaksi olemme yhdistäneet muuttujan "PercentageCompleted", kun silmukka on käynnissä, sen edessä olevan sanan kanssa "% Completed".
Koodi:
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
Muistettavaa
- Voimme lisätä vain tehtävät, jotka on tehtävä silmukan sisällä.
- Voit lisätä tehtävät, jotka sinun on tehtävä, kun olet lisännyt Tapahtumat-menettelyn.