Excel VBA StatusBar Proprietà
La proprietà StatusBar dell’oggetto Application in Excel VBA può essere utilizzato per indicare lo stato di avanzamento di un lungo macro. In questo modo, è possibile far conoscere all’utente che una macro è ancora in esecuzione.
Situazione:
La macro che stiamo per creare riempie Range ( “A1: E20”) con numeri casuali.
Aggiungere le seguenti righe di codice per il pulsante di comando:
-
In primo luogo, si dichiara tre variabili di tipo Integer, chiamato i, j e pctCompl.
Dim i As Integer, j As Integer, pctCompl As Integer
-
Aggiungere un Double Loop.
For i = 1 To 20 For j = 1 To 5 Next j Next i
Aggiungere le seguenti linee di codice (a 3, 4 e 5) alla rete.
-
Utilizzare la funzione RANDBETWEEN per importare un numero casuale compreso tra 20 e 100.
Cells(i, j).Value = WorksheetFunction.RandBetween(20, 100)
-
Inizializzare il pctCompl variabile. La seconda riga di codice scrive il valore della variabile pctCompl e del testo descrittivo nella barra di stato.
pctCompl = (i - 1) 5 + (j 1) Application.StatusBar = "Importing Data.. " & pctCompl & "% Completed"
Esempio: per i = 3, j = 1, (3 – 1) 5 + (1 1) = 11% è stato completato.
-
Usiamo il metodo Wait dell’oggetto Application per simulare un lungo macro.
Application.Wait Now + TimeValue("00:00:01")
-
Per ripristinare il testo barra di stato di default, impostare la proprietà StatusBar su False (al di fuori del ciclo).
Application.StatusBar = False
Risultato quando si fa clic sul pulsante di comando sul foglio:
Nota: è possibile link: / VBA-esempi-interrupt-a-macro [interrupt una macro]
in qualsiasi momento premendo il tasto Esc o Ctrl + Pausa. Per un approccio più visivo, consultare il nostro link : / VBA-esempi-progresso-Indicatore
programma [Indicatore di avanzamento].