/ / Indicatore di avanzamento in VBA di Excel

Indicatore di avanzamento in VBA di Excel

Di seguito vedremo un programma in Excel VBA che crea un indicatore di progresso. Abbiamo mantenuto l'indicatore di progresso il più semplice possibile, tuttavia sembra professionale. Sei pronto?

L'Userform che stiamo per creare appare come segue:

Indicatore di avanzamento in VBA di Excel

Per creare questo Userform, eseguire i seguenti passaggi.

1. Aprire il Visual Basic Editor. Se Project Explorer non è visibile, fai clic su Visualizza, Esplora progetti.

2. Fare clic su Inserisci, Userform. Se la casella degli strumenti non viene visualizzata automaticamente, fare clic su Visualizza, Casella degli strumenti. Lo schermo dovrebbe essere impostato come di seguito.

Impostazione della schermata Userform in Excel VBA

Questo Userform consiste solo di tre controlli. Un controllo frame e due controlli etichetta.

3. Aggiungi il controllo del frame. Puoi farlo cliccando su Frame dalla Toolbox. Successivamente, puoi trascinare un controllo frame sul modulo utente. È necessario modificare alcune proprietà di questo controllo frame. Fare clic con il pulsante destro del mouse sul controllo del frame e quindi fare clic su Proprietà. Svuotare il campo Didascalia, impostare Altezza su 24 e Larghezza su 204.

4. Aggiungi il primo controllo etichetta e posizionalo nel controllo Frame. Fare clic con il pulsante destro del mouse sul controllo dell'etichetta e quindi fare clic su Proprietà. Cambia il nome in Bar, BackColor in Evidenzia, svuota il campo Didascalia, imposta Altezza su 20 e Larghezza su 10.

5. Aggiungi il secondo controllo etichetta e posizionalo sopra il controllo Frame. Fare clic con il pulsante destro del mouse sul controllo dell'etichetta e quindi fare clic su Proprietà. Cambia il nome in Testo e modifica la didascalia in "0% completato".

6. Modificare la didascalia dell'indicatore Userform to Progress.

Una volta che questo è stato completato, il risultato dovrebbe essere coerente con l'immagine della forma utente mostrata in precedenza.

7. Mettere un pulsante di comando sul foglio di lavoro e aggiungere la seguente riga di codice per mostrare il form utente:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Se hai passato l'altro Userformesempi su questo sito, sai che questo è il momento di creare Sub UserForm_Initialize. Questo Sub viene eseguito automaticamente ogni volta che viene caricato il modulo utente. Pertanto, quando si utilizza il metodo Show per Userform, il codice verrà automaticamente eseguito. Invece del Sub UserForm_Initialize, creiamo Sub UserForm_Activate. Utilizzando questo sottotitolo, Excel VBA può aggiornare l'Userform per mostrare l'avanzamento della macro.

8. Aprire il Visual Basic Editor.

9. Nell'Esplora progetti, fare clic con il pulsante destro su UserForm1 e quindi scegliere Visualizza codice.

10. Selezionare Userform dall'elenco a discesa a sinistra. Scegli Attiva dall'elenco a discesa a destra.

11. Aggiungi la seguente riga di codice:

Private Sub UserForm_Activate()

code

End Sub

Spiegazione: questo sub chiama un altro sottocodice che creeremo in un minuto. Confuso? È possibile consultare il capitolo Funzione e Sottotitolo per ulteriori informazioni sui sottotitoli. Se sei di fretta, esegui i seguenti passaggi e starai bene.

12. Inserire il codice sottotitolo in un modulo (nel Visual Basic Editor, fare clic su Inserisci, Modulo). Questo è solo un esempio. Questo è IL posto dove aggiungere il proprio codice quando si desidera utilizzare questo indicatore di avanzamento per la propria macro. Il codice appare come segue.

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

Spiegazione: innanzitutto inizializziamo alcune variabili. Quindi, cancelliamo sheet1. Usiamo un doppio ciclo per mostrare i valori da 1 a 1000 nelle prime 100 righe del foglio di lavoro. Ciò manterrà occupato VBA di Excel per un po 'e ci darà l'opportunità di vedere l'andamento della macro. La variabile pctCompl (abbreviazione per percentageCompleted) misura l'avanzamento della macro. Infine, chiamiamo un altro sottoprogramma denominato progresso e trasmettiamo il valore della variabile pctCompl per aggiornare Userform. In questo modo possiamo vedere il progresso della macro!

13. Aggiungi un altro sottoprogramma denominato progresso. Il codice appare come segue:

Sub progress(pctCompl As Single)

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

DoEvents

End Sub

Spiegazione: la prima riga di codice cambia la didascalia del primo controllo etichetta. La seconda riga di codice modifica la larghezza del controllo della seconda etichetta. Aggiungi DoEvents per aggiornare il form utente.

14. Chiudere il Visual Basic Editor e fare clic sul pulsante di comando sul foglio:

Risultato:

Risultato dell'indicatore di stato

Nota: per questa macro, abbiamo usato la variabile i per misurare il progresso. Ad esempio, alla riga 11, il 10% è completato. Questo potrebbe essere diverso per la tua macro. La tecnica di passare il valore della variabile pctCompl al sotto progresso per aggiornare Userform rimane la stessa.

Leggi anche: