/ / Voortgangsindicator in Excel VBA

Voortgangsindicator in Excel VBA

Hieronder zullen we een programma bekijken in Excel VBA dat creëert een voortgangsindicator. We hebben de voortgangsindicator zo eenvoudig mogelijk gehouden, maar het ziet er professioneel uit. Ben je klaar?

Het Userform dat we gaan maken ziet er als volgt uit:

Voortgangsindicator in Excel VBA

Om dit gebruikersformulier aan te maken, voert u de volgende stappen uit.

1. Open de Visual Basic-editor. Als de Projectverkenner niet zichtbaar is, klikt u op Beeld, Projectverkenner.

2. Klik op Invoegen, Gebruikersformulier. Als de Toolbox niet automatisch verschijnt, klikt u op Beeld, Werkset. Uw scherm moet worden ingesteld zoals hieronder.

Gebruikersformulier Scherminstellingen in Excel VBA

Dit gebruikersformulier bestaat alleen uit drie bedieningselementen. Een framebediening en twee labelbedieningen.

3. Voeg de kaderregeling toe. U kunt dit doen door in de Toolbox op Frame te klikken. Vervolgens kunt u een kader op het gebruikersformulier slepen. U moet enkele eigenschappen van dit frame-besturingselement wijzigen. Klik met de rechtermuisknop op het kader en klik vervolgens op Eigenschappen. Leeg het veld Bijschrift, stel de Hoogte in op 24 en Breedte op 204.

4. Voeg de eerste labelbesturing toe en plaats deze in het Frame-besturingselement. Klik met de rechtermuisknop op het labelbeheer en klik vervolgens op Eigenschappen. Wijzig de naam in Bar, BackColor in Markeren, leeg het veld Bijschrift, stel de Hoogte in op 20 en Breedte in op 10.

5. Voeg de tweede labelbesturing toe en plaats deze boven het frame-besturingselement. Klik met de rechtermuisknop op het labelbeheer en klik vervolgens op Eigenschappen. Verander de naam in Tekst en verander de Titel in "0% Voltooid".

6. Verander het bijschrift van de Userform naar Progress Indicator.

Zodra dit is voltooid, moet het resultaat consistent zijn met de afbeelding van het eerder weergegeven gebruikersformulier.

7. Plaats een opdrachtknop op uw werkblad en voeg de volgende coderegel toe om het gebruikersformulier weer te geven:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Als u het andere gebruikersformulier hebt doorlopenvoorbeelden op deze site, u weet dat dit het moment is om Sub UserForm_Initialize te maken. Deze sub wordt automatisch uitgevoerd wanneer het gebruikersformulier is geladen. Wanneer u de methode Show voor het Userform gebruikt, wordt de code dus automatisch uitgevoerd. In plaats van de Sub UserForm_Initialize maken we de Sub UserForm_Activate. Door deze sub te gebruiken, kan Excel VBA het gebruikersformulier bijwerken om de voortgang van de macro te tonen.

8. Open de Visual Basic-editor.

9. Klik in de projectverkenner met de rechtermuisknop op UserForm1 en klik vervolgens op Code weergeven.

10. Kies Userform in de linker vervolgkeuzelijst. Kies Activeren in de rechter vervolgkeuzelijst.

11. Voeg de volgende coderegel toe:

Private Sub UserForm_Activate()

code

End Sub

Uitleg: deze sub roept een andere code met de subnaam op die we in een minuut gaan maken. Verward? Je kunt door ons Functie- en Subhoofdstuk gaan voor meer informatie over subs. Als u gehaast bent, voert u de volgende stappen uit en u komt wel goed.

12. Plaats de code met de subnaam in een module (klik in de Visual Basic-editor op Invoegen, Module). Dit is slechts een voorbeeld. Dit is DE plek om uw eigen code toe te voegen wanneer u deze voortgangsindicator wilt gebruiken voor uw eigen macro. De code ziet er als volgt uit.

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

Uitleg: eerst initialiseren we enkele variabelen. Vervolgens wissen we sheet1. We gebruiken een dubbele lus om de waarden van 1 tot 1000 in de eerste 100 rijen van het werkblad weer te geven. Hierdoor blijft Excel VBA een tijdje actief en kunnen we de voortgang van de macro bekijken. De variabele pctCompl (afkorting voor percentage Voltooid) meet de voortgang van de macro. Ten slotte noemen we een andere sub met de naam progress en geven we de waarde van de variabele pctCompl door om het gebruikersformulier bij te werken. Op deze manier kunnen we de voortgang van de macro zien!

13. Voeg nog een sub met de naam voortgang toe. De code ziet er als volgt uit:

Sub progress(pctCompl As Single)

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

DoEvents

End Sub

Uitleg: de eerste coderegel verandert het bijschrift van het eerste labelbeheer. De tweede coderegel verandert de breedte van het tweede labelbesturingselement. Voeg DoEvents toe om het gebruikersformulier bij te werken.

14. Sluit de Visual Basic Editor en klik op de opdrachtknop op het blad:

Resultaat:

Voortgangsindicator Resultaat

Notitie: voor deze macro hebben we de variabele i gebruikt om de voortgang te meten. In rij 11 is bijvoorbeeld 10% voltooid. Dit kan anders zijn voor uw macro. De techniek van het doorgeven van de waarde van de variabele pctCompl aan de voortgang van de sub om het gebruikersformulier bij te werken, blijft hetzelfde.

Lees ook: