/ / Indicator de progres în Excel VBA

Indicator de progres în Excel VBA

Mai jos ne vom uita la un program în Excel VBA care creează o indicator de progres. Am păstrat indicatorul de progres cât mai simplu posibil, dar arată profesional. Sunteți gata?

Formularul de utilizator pe care îl vom crea arată după cum urmează:

Indicator de progres în Excel VBA

Pentru a crea această formă de utilizator, executați următorii pași.

1. Deschideți Editorul Visual Basic. Dacă Project Explorer nu este vizibil, faceți clic pe Vizualizare, Project Explorer.

2. Faceți clic pe Inserare, Formă utilizator. Dacă Toolbox-ul nu apare automat, faceți clic pe View (Vizualizare), Toolbox (Instrumente). Ecranul dvs. trebuie să fie configurat ca mai jos.

Setarea ecranului utilizatorului în Excel VBA

Această formă de utilizator constă doar din trei controale. Un cadru de control și două controale de etichete.

3. Adăugați comanda cadru. Puteți face acest lucru făcând clic pe Frame din caseta de instrumente. Apoi, puteți trage un control cadru pe Userform. Trebuie să modificați câteva proprietăți ale acestui control cadru. Faceți clic dreapta pe butonul de control cadru, apoi faceți clic pe Proprietăți. Goliți câmpul Caption, setați Înălțimea la 24 și Lățimea la 204.

4. Adăugați primul control de etichetă și plasați-l în comanda Frame. Faceți clic dreapta pe butonul de control al etichetei, apoi faceți clic pe Proprietăți. Schimbați numele la Bar, BackColor pentru a evidenția, golirea câmpului Caption, setați Înălțimea la 20 și Lățimea la 10.

5. Adăugați cel de-al doilea control de etichetare și plasați-l deasupra comenzii Frame. Faceți clic dreapta pe butonul de control al etichetei, apoi faceți clic pe Proprietăți. Schimbați numele în Text și modificați subtitlul la "0% Finalizat".

6. Schimbați legătura indicatorului Userform cu progresul.

Odată terminată, rezultatul ar trebui să fie în concordanță cu imaginea formularului de utilizator afișat mai devreme.

7. Plasați un buton de comandă pe foaia dvs. de lucru și adăugați următoarea linie de cod pentru a afișa Userform:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Dacă ați trecut prin celălalt User Formatexemple de pe acest site, știți că este timpul să creați Sub UserForm_Initialize. Acest Sub rulează automat ori de câte ori este încărcat Userform. Astfel, atunci când utilizați metoda Show pentru formularul User, codul va fi executat automat. În loc de Sub UserForm_Initialize, vom crea Sub UserForm_Activate. Prin utilizarea acestui sub, Excel VBA poate actualiza Userform pentru a arăta progresul macroului.

8. Deschideți Editorul Visual Basic.

9. În Project Explorer, faceți clic dreapta pe UserForm1 și apoi faceți clic pe View Code (Vizualizare cod).

10. Selectați Format utilizator din lista verticală stânga. Selectați Activare din lista derulantă din dreapta.

11. Adăugați următoarea linie de cod:

Private Sub UserForm_Activate()

code

End Sub

Explicaţie: această secțiune numește un alt cod numit pe care o vom crea într-un minut. Confuz? Puteți trece prin capitolul Funcții și capitole pentru a afla mai multe despre subs. Dacă vă grăbiți, executați următorii pași și veți fi bine.

12. Plasați codul sub nume într-un modul (în Editorul Visual Basic, faceți clic pe Inserare, Modul). Acesta este doar un exemplu. Acesta este locul pentru adăugarea propriului cod atunci când doriți să utilizați acest indicator de progres pentru propriul dvs. macro. Codul arată după cum urmează.

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

Explicație: mai întâi, inițializăm câteva variabile. Apoi, clarificăm fișa1. Utilizăm o buclă dublă pentru a afișa valorile de la 1 la 1000 în primele 100 de rânduri din foaia de lucru. Acest lucru va menține Excel VBA ocupat pentru un timp și ne oferă posibilitatea de a vedea progresul macro. Variabila pctCompl (abrevierea pentru procentCompleted) măsoară progresul macro-ului. În cele din urmă, numim un alt subprogram denumit progres și transmitem valoarea variabilei pctCompl pentru a actualiza Userform. Astfel vedem progresul macro-ului!

13. Adăugați un alt progres sub numele. Codul arată după cum urmează:

Sub progress(pctCompl As Single)

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

DoEvents

End Sub

Explicație: prima linie de cod modifică legenda primului control de etichete. A doua linie de cod modifică lățimea celui de-al doilea control al etichetelor. Adăugați DoEvents pentru a actualiza Userform.

14. Ieșiți din Editorul Visual Basic și faceți clic pe butonul de comandă de pe foaie:

Rezultat:

Evoluția indicatorului de progres

Notă: pentru această macrocomandă am folosit variabila i pentru a măsura progresul. De exemplu, la rândul 11, 10% este finalizată. Acest lucru poate fi diferit pentru macrocomanda dvs. Tehnica de trecere a valorii variabilei pctCompl la subprogram pentru a actualiza Userform rămâne aceeași.

De asemenea, citiți: