/ / Progress Indicator i Excel VBA

Progress Indicator i Excel VBA

Nedan ser vi på ett program i Excel VBA som skapar en framstegsindikator. Vi har hållit framstegsindikatorn så enkelt som möjligt, men det ser professionellt ut. Är du redo?

Användarformen vi ska skapa ser ut som följer:

Progress Indicator i Excel VBA

För att skapa detta användarformulär, utför följande steg.

1. Öppna Visual Basic Editor. Om Project Explorer inte är synligt klickar du på Visa, Project Explorer.

2. Klicka på Insert, Userform. Om Verktygslådan inte visas automatiskt klickar du på Visa, Verktygslåda. Din skärm bör ställas in enligt nedan.

Userform Screen Setup i Excel VBA

Denna användarform består endast av tre kontroller. En ramkontroll och två etikettkontroller.

3. Lägg till ramkontrollen. Du kan göra detta genom att klicka på Ram från verktygslådan. Därefter kan du dra en ramkontroll på Userform. Du måste ändra några egenskaper för denna ramkontroll. Högerklicka på ramkontrollen och klicka sedan på Egenskaper. Töm bildtextfältet, ställ in Höjd till 24 och Bredd till 204.

4. Lägg till den första etikettkontrollen och placera den i ramkontrollen. Högerklicka på etikettkontrollen och klicka sedan på Egenskaper. Byt namn till Bar, BackColor till Highlight, töm skärmfältet, ställ in Höjd till 20 och Bredd till 10.

5. Lägg till den andra etikettkontrollen och placera den ovanför ramkontrollen. Högerklicka på etikettkontrollen och klicka sedan på Egenskaper. Byt namn till Text och ändra bildtexten till "0% Slutförd".

6. Ändra bildtexten i Userform till Progress Indicator.

När detta har slutförts ska resultatet överensstämma med bilden av användarformen som visats tidigare.

7. Placera en kommandoknapp på ditt arbetsblad och lägg till följande kodlinje för att visa användarformuläret:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Om du har gått igenom den andra användarformenexempel på den här sidan vet du att det här är dags att skapa Sub UserForm_Initialize. Denna del körs automatiskt när användarformen är laddad. När du använder Show-metoden för användarformen körs koden automatiskt. I stället för Sub UserForm_Initialize skapar vi Sub UserForm_Activate. Genom att använda denna del kan Excel VBA uppdatera användarformuläret för att visa makroens framsteg.

8. Öppna Visual Basic Editor.

9. I Project Explorer högerklickar du på UserForm1 och klickar sedan på Visa kod.

10. Välj Användarformulär i den nedrullningsbara listrutan. Välj Aktivera från den högra rullgardinsmenyn.

11. Lägg till följande kodrad:

Private Sub UserForm_Activate()

code

End Sub

Förklaring: den här delen heter en annan under namngiven kod som vi ska skapa på en minut. Förvirrad? Du kan gå igenom vårt kapitel Funktion och kapitel för att lära dig mer om subs. Om du har bråttom, kör bara följande steg och du kommer att bli bra.

12. Placera den subnamnkoden i en modul (Klicka på Infoga, modul i Visual Basic Editor). Detta är bara ett exempel. Det här är platsen för att lägga till din egen kod när du vill använda den här indikationsindikatorn för ditt eget makro. Koden ser ut som följer.

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

Förklaring: Först inleder vi några variabler. Därefter rensar vi ark1. Vi använder en dubbel slinga för att visa värdena från 1 till 1000 i de första 100 raderna i kalkylbladet. Detta kommer att hålla Excel VBA upptagen ett tag och ger oss möjlighet att se makroens framsteg. Den variabla pctCompl (förkortning för percentCompleted) mäter makroens framsteg. Slutligen kallar vi en annan under namngiven framsteg och överför värdet av variabeln pctCompl för att uppdatera användarformen. På så sätt kan vi se makroens framsteg!

13. Lägg till en annan under namngiven framsteg. Koden ser ut som följer:

Sub progress(pctCompl As Single)

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

DoEvents

End Sub

Förklaring: Den första kodlinjen ändrar bildtexten för den första etikettkontrollen. Den andra kodlinjen ändrar bredden på den andra etikettkontrollen. Lägg till DoEvents för att uppdatera användarformuläret.

14. Avsluta Visual Basic Editor och klicka på kommandoknappen på arket:

Resultat:

Resultatindikatorresultat

Notera: för detta makro använde vi variabeln jag för att mäta framstegen. Till exempel, vid rad 11, är 10% färdigställd. Det här kan vara annorlunda för ditt makro. Tekniken att överföra värdet av variabeln pctCompl till delprogressen för att uppdatera användarformen förblir densamma.

Läs också: