Excel VBA statusa josla
StatusBar ir vba īpašums, ko izmanto, lai parādītu koda statusu, kas izpildīts vai pabeigts izpildes laikā. Tas tiek parādīts darblapas kreisajā stūrī, kad tiek izpildīts makro, un statuss tiek parādīts procentos lietotājam.
Kad makro darbojas aiz muguras, ir nepatīkami gaidīt, nezinot, cik ilgi tas notiks. Ja atrodaties koda darbības stadijā, varat vismaz aprēķināt laiku, kas tam būs nepieciešams. Tātad, ideja ir tāda, ka līdz šim ir pabeigta statusa josla, kas parāda līdz šim pabeigto darbu procentuālo daļu.

Kas ir Application.StatusBar?
Application.StatusBar ir īpašums, ko mēs varam izmantot makro kodēšanā, lai parādītu statusu, kad makro darbojas aiz ainas.
Tas nav tik skaisti kā mūsu “VBA progresa josla”, bet pietiekami labs, lai zinātu makro projekta statusu.

Piemērs StatusBar izveidei, izmantojot VBA
Veiciet tālāk norādītās darbības, lai izveidotu statusa joslu.
1. solis: Vispirms definējiet VBA mainīgo, lai darblapā atrastu pēdējo izmantoto rindu.
Kods:
Sub Status_Bar_Progress () Dim LR As Long End Sub

2. darbība. Atrodiet pēdējo izmantoto rindu, izmantojot tālāk norādīto kodu.
Kods:
Sub Status_Bar_Progress () Dim LR As Long LR = Cells (Rows.Count, 1). End (xlUp). Rindas beigu apakšdaļa

3. solis: Tālāk mums jādefinē mainīgais, lai turētu parādāmo joslu skaitu.
Kods:
Sub Status_Bar_Progress () Dim LR As Long LR = šūnas (Rows.Count, 1). End (xlUp). Rindas Dim NumOfBars kā vesels skaitlis End Sub

Tajā tiks rādīts, cik joslu ir atļauts parādīt statusa joslā.
4. solis: šim mainīgajam joslas robežu saglabājiet kā 45.
Kods:
Sub Status_Bar_Progress () Dim LR As Long LR = šūnas (Rows.Count, 1). End (xlUp). Rindas Dim NumOfBars kā vesels skaitlis NumOfBars = 45 End Sub

5. darbība: definējiet vēl divus mainīgos, lai saglabātu pašreizējo statusu un pabeigto procentuālo daļu, kad darbojas makro.
Kods:
Sub Status_Bar_Progress () Dim LR As Long LR = šūnas (Rows.Count, 1) .End (xlUp). Rindas Dim NumOfBars kā vesels skaitlis NumOfBars = 45 Dim PresentStatus kā vesels skaitlis Dim Percetage Pabeigts kā Integer End Sub

6. solis: Tagad, lai iespējotu statusa joslu, izmantojiet zemāk esošo kodu.
Kods:
Sub Status_Bar_Progress () Dim LR As Long LR = Cells (Rows.Count, 1) .End (xlUp). Rindas Dim NumOfBars As Integer NumOfBars = 45 Dim PresentStatus As Integer Dim PercetageCompleted as Integer Application.StatusBar = "(" & Space ( NumOfBars) & ")" End Sub

Tas, kā tas tiks darīts, pievienos iekavu (() un pievienos 45 atstarpes rakstzīmes, pirms teksts beigsies ar aizvērošo iekavu ()).
Izpildiet kodu, un mēs varētu redzēt zemāk Excel VBA statusa joslā.
Izeja:

7. solis: Tagad mums ir jāiekļauj cilpa For Next VBA, lai aprēķinātu pabeigtā makro procentuālo daudzumu. Definējiet mainīgo, lai sāktu makro.
Kods:
Sub Status_Bar_Progress () Dim LR As Long LR = Cells (Rows.Count, 1) .End (xlUp). Rindas 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

8. solis: Cilpas iekšpusē mums jāaprēķina, kāds ir “pašreizējais statuss”. Tāpēc mainīgajam “PresentStatus” mums jāpielieto šāda formula:
Kods:
Sub Status_Bar_Progress () Dim LR As Long LR = Cells (Rows.Count, 1) .End (xlUp). Rindas 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) Nākamais k Beigu apakšsadaļa

Mēs esam izmantojuši funkciju “ INT ”, lai rezultātā iegūtu veselu skaitli.
9. solis: Tagad mums jāaprēķina, kāda ir “ Pabeigšanas procentuālā daļa ”, lai mēs varētu piemērot formulu, kā parādīts zemāk.
Kods:
Sub Status_Bar_Progress () Dim LR As Long LR = Cells (Rows.Count, 1) .End (xlUp). Rindas 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 Uz LR PresentStatus = Int ((k / LR) * NumOfBars) PercetageCompleted = Round (PresentStatus / NumOfBars * 100, 0) Nākamais k Beigu apakšsadaļa

Šajā gadījumā mēs esam izmantojuši ROUND funkciju excel, jo neatkarīgi no komata, mums ir jānoapaļo līdz tuvākajai nulles vērtībai, tāpēc šeit ir izmantots ROUND ar nulli kā arguments.
10. solis: Mēs jau esam ievietojuši sākuma kronšteinu un beigu kronšteinu statusa joslā, tagad mums jāievieto atjauninātais rezultāts, un to var izdarīt, izmantojot zemāk esošo kodu.
Kods:
Sub Status_Bar_Progress () Dim LR As Long LR = Cells (Rows.Count, 1) .End (xlUp). Rindas 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 Uz LR PresentStatus = Int ((k / LR) * NumOfBars) PercetageCompleted = Round (PresentStatus / NumOfBars * 100, 0) Application.StatusBar = "(" & String ( PresentStatus, "|") & Space (NumOfBars - PresentStatus) & _ ")" & PercetageCompleted & "Complete Complete" Nākamais k beigu apakšsadaļa
Iepriekš minētajā kodā mēs esam ievietojuši sākuma kronšteinu “(“ un, lai parādītu makro progresu, mēs esam ievietojuši taisnu līniju (|), izmantojot funkciju STRING. Kad cilpa darbojas, tā aizņems “ PresentStatus , Un šīs daudzās taisnes tiks ievietotas statusa joslā.
Kods:
Application.StatusBar = "(" & String (PresentStatus, "|")
Pēc tam mums jāpievieno atstarpes rakstzīmes starp vienu taisnu līniju citai, tāpēc to aprēķinās, izmantojot “NumOfBars” mīnus “PresentStatus”.
Kods:
Application.StatusBar = "(" & String (PresentStatus, "|") & Space (NumOfBars - PresentStatus)
Tad mēs aizveram kronšteinu “).” Pēc tam mēs esam apvienojuši mainīgo vērtību “PercentageCompleted”, kamēr cilpa darbojas, ar vārdu priekšā kā “% Pabeigts”.
Kods:
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
Atceramās lietas
- Mēs varam pievienot tikai tos uzdevumus, kas jāveic ciklā.
- Pēc procedūras “Vai notikumi” pievienošanas varat pievienot uzdevumus, kas jums jāveic.