Indicatore di avanzamento in Excel VBA
Di seguito vedremo un programma in Excel VBA che crea un indicatore di avanzamento. Abbiamo mantenuto l’indicatore di avanzamento il più semplice possibile, ma sembra professionale. Siete pronti? Il form ci accingiamo a creare look come segue:
Per creare questo form, eseguire i seguenti passaggi.
-
Aprire il Visual Basic Editor. Se il progetto Explorer non è visibile, fare clic su Visualizza, progetti.
-
Fare clic su Inserisci, Userform. Se la Casella degli strumenti non viene visualizzata automaticamente, fare clic su Visualizza, Strumenti. Lo schermo dovrebbe essere impostato come di seguito.
Questo Userform consiste solo di tre controlli. Un controllo telaio e due controlli Etichetta.
-
Aggiungere il controllo telaio. È possibile farlo cliccando sul fotogramma dalla Casella degli strumenti. Successivamente, è possibile trascinare un controllo cornice dell’oggetto UserForm. È necessario modificare alcune proprietà di questo controllo frame. Fare clic destro del mouse sul controllo telaio, e quindi fare clic su Proprietà. Svuotare il campo Didascalia, impostare l’altezza di 24 e larghezza di 204.
-
Aggiungere il primo controllo e riporla nel controllo Frame. Fare clic destro del mouse sul controllo etichetta e quindi fare clic su Proprietà. Modificare il nome di Bar, BackColor Per evidenziare, svuotare il campo Didascalia, impostare l’altezza di 20 e larghezza a 10.
-
Aggiungere il secondo controllo e riporla sopra il controllo Frame.
Fare clic destro del mouse sul controllo etichetta e quindi fare clic su Proprietà.
Cambiare il nome di testo e modificare la didascalia a ‘0% Completato’.
-
Modificare la didascalia del Form utente Indicatore di avanzamento.
Una volta che questo è stato completato, il risultato deve essere coerente con l’immagine del Userform mostrato in precedenza.
-
Inserire un pulsante di comando nel foglio di lavoro e aggiungere la seguente riga di codice per mostrare il form:
Private Sub CommandButton1_Click() UserForm1.Show End Sub
Se sono passati attraverso gli altri esempi form su questo sito, si sa che questo è il momento di creare l’UserForm_Initialize Sub. Questo Comparto viene eseguito automaticamente ogni volta che il form viene caricato. Così, quando si utilizza il metodo Show per il form, verrà automaticamente eseguito il codice. Invece del UserForm_Initialize Sub, creiamo l’UserForm_Activate Sub. Utilizzando questo sub, Excel VBA può aggiornare il form per mostrare lo stato di avanzamento della macro.
-
Aprire il Visual Basic Editor.
-
In Esplora progetti, fare clic destro su UserForm1 e quindi fare clic su Visualizza codice.
-
Scegliere Userform dall’elenco a discesa sinistra. Scegliere Attiva dal menu a discesa a destra.
-
Aggiungere la seguente riga di codice:
Private Sub UserForm_Activate() code End Sub
Spiegazione: questo sub chiama un altro codice di sub di nome che stiamo per creare in un minuto. Confuso? Si può passare attraverso la nostra funzione e sub capitolo per saperne di più su Subs. Se siete di fretta, basta eseguire i seguenti passi e vi andrà bene.
-
Posizionare il sub di nome codice in un modulo (in Visual Basic Editor, fare clic su Inserisci, Module). Questo è solo un esempio. Questo è il posto per aggiungere il proprio codice quando si desidera utilizzare questo indicatore di avanzamento per il proprio macro. Il codice è il seguente.
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: in primo luogo, inizializzare alcune variabili. Successivamente, abbiamo chiaro sheet1.
Usiamo un anello doppio per mostrare i valori da 1 a 1000 nei primi 100 righe del foglio. Ciò manterrà Excel VBA occupato per un po ‘e ci dà la possibilità di vedere i progressi della macro. La variabile pctCompl (abbreviazione di percentageCompleted) misura il progresso della macro. Infine, chiamiamo altro comparto denominato progresso e passare il valore della variabile pctCompl per aggiornare l’Userform. In questo modo siamo in grado di vedere i progressi della macro! 13. Aggiungere un altro sub di nome progresso. Gli sguardi codice come segue:
Sub progress(pctCompl As Single) UserForm1.Text.Caption = pctCompl & "% Completed" UserForm1.Bar.Width = pctCompl * 2 DoEvents End Sub
Spiegazione: la prima linea di codice modifica la didascalia del primo controllo etichetta. La seconda linea di codice modifica la larghezza del secondo controllo etichetta. Aggiungere DoEvents per aggiornare il form.
-
Uscire dal Visual Basic Editor e fare clic sul pulsante di comando sul foglio:
Risultato:
Nota: per questa macro, abbiamo usato la variabile i per misurare i progressi.
Ad esempio, alla riga 11, 10% è completata. Questo può essere diverso per la macro. La tecnica di passare il valore delle variabili pctCompl al progresso sub per aggiornare l’Userform rimane la stessa.