/ / Fremskridtsindikator i Excel VBA

Fremskridtsindikator i Excel VBA

Nedenfor vil vi se på et program i Excel VBA der skaber en fremskridt indikator. Vi har holdt fremskridtindikatoren så enkel som mulig, men den ser professionel ud. Er du klar?

Brugerformularen, vi skal oprette, ser ud som følger:

Fremskridtsindikator i Excel VBA

For at oprette denne brugerformular, udfør følgende trin.

1. Åbn Visual Basic Editor. Hvis Project Explorer ikke er synlig, skal du klikke på Vis, Project Explorer.

2. Klik på Indsæt, Brugerformular. Hvis værktøjskassen ikke vises automatisk, skal du klikke på Vis, Værktøjskasse. Din skærm skal opsættes som nedenfor.

Brugerform Screen Setup i Excel VBA

Denne brugerform består kun af tre kontroller. En ramme kontrol og to etiket kontroller.

3. Tilføj rammekontrollen. Du kan gøre dette ved at klikke på Ramme fra værktøjskassen. Derefter kan du trække en ramme kontrol på brugerformularen. Du skal ændre nogle egenskaber ved denne ramme kontrol. Højre museklik på rammekontrollen, og klik derefter på Egenskaber. Tøm feltet Caption, indstil højden til 24 og bredde til 204.

4. Tilføj den første etiketkontrol og læg den i rammekontrollen. Højre museklik på etikettekontrollen, og klik derefter på Egenskaber. Skift navn til Bar, BackColor til Highlight, tøm feltet Caption, indstil Højden til 20 og Bredde til 10.

5. Tilføj den anden etiket kontrol og placere den over rammekontrollen. Højre museklik på etikettekontrollen, og klik derefter på Egenskaber. Skift navn til Tekst og skift billedteksten til "0% Afsluttet".

6. Skift teksten til brugerformularen til statusindikator.

Når dette er gennemført, skal resultatet være i overensstemmelse med billedet af den tidligere viste brugerformular.

7. Anbring en kommandoknap på dit regneark og tilføj følgende kode linje for at vise Brugerformularen:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Hvis du har gennemgået den anden brugerformularEksempler på dette websted, du ved, at dette er tid til at oprette Sub UserForm_Initialize. Denne del kører automatisk, når brugerformularen er indlæst. Når du bruger Show-metoden til brugerformularen, udføres koden automatisk. I stedet for Sub UserForm_Initialize opretter vi Sub UserForm_Activate. Ved at bruge denne del kan Excel VBA opdatere brugerformularen for at vise makroens fremskridt.

8. Åbn Visual Basic Editor.

9. I Project Explorer skal du højreklikke på UserForm1 og derefter klikke på View Code.

10. Vælg Brugerform fra den venstre rullemenu. Vælg Aktivér fra den højre rulleliste.

11. Tilføj følgende kode linje:

Private Sub UserForm_Activate()

code

End Sub

Forklaring: denne underkaller en anden undernavngivet kode, vi skal oprette om et minut. Forvirret? Du kan gennemgå vores Funktion og Under kapitel for at lære mere om subs. Hvis du har travlt, skal du bare udføre de følgende trin, og du vil blive i orden.

12. Placer den undernavngivne kode i et modul (Klik på Indsæt, modul i Visual Basic Editor). Dette er blot et eksempel. Dette er stedet at tilføje din egen kode, når du vil bruge denne fremdriftsindikator til din egen makro. Koden ser ud som følger.

Sub code()

Dim i As Integer, j As Integer, pctCompl As Single

Sheet1.Cells.Clear

For i = 1 To 100
    For j = 1 To 1000
        Cells(i, 1).Value = j
    Next j
    pctCompl = i
    progress pctCompl
Next i

End Sub

Forklaring: For det første initialiserer vi nogle variabler. Derefter rydder vi ark1. Vi bruger en dobbelt sløjfe til at vise værdierne fra 1 til 1000 i de første 100 rækker af regnearket. Dette vil holde Excel VBA optaget et stykke tid og giver os mulighed for at se makroens fremskridt. Den variable pctCompl (forkortelse for percentCompleted) måler makroens fremskridt. Endelig kalder vi en anden under, der hedder fremskridt og overfører værdien af ​​variablen pctCompl for at opdatere brugerformularen. På denne måde kan vi se makroens fremskridt!

13. Tilføj en anden under, der hedder fremskridt. Koden ser ud som følger:

Sub progress(pctCompl As Single)

UserForm1.Text.Caption = pctCompl & "% Completed"
UserForm1.Bar.Width = pctCompl * 2

DoEvents

End Sub

Forklaring: Den første kode linje ændrer billedteksten for den første etiket kontrol. Den anden kode linje ændrer bredden af ​​den anden etiket kontrol. Tilføj DoEvents for at opdatere brugerformularen.

14. Afslut Visual Basic Editor og klik på kommandoknappen på arket:

Resultat:

Resultatindikatorresultat

Bemærk: For denne makro brugte vi variablen jeg til at måle fremskridtene. For eksempel er i række 11, 10% afsluttet. Dette kan være anderledes for din makro. Teknikken til at overføre værdien af ​​variablen pctCompl til sub-fremskridtet for at opdatere brugerformen forbliver den samme.

Læs også: