Il Proprietà StatusBar dell'oggetto Application in Excel VBA può essere utilizzato per indicare lo stato di avanzamento di una macro lunga. In questo modo, puoi informare l'utente che una macro è ancora in esecuzione.
Situazione:
La macro che creeremo riempie l'intervallo ("A1: E20") con numeri casuali.
Aggiungi le seguenti righe di codice al pulsante di comando:
1. Innanzitutto, dichiariamo tre variabili di tipo Integer, denominate i, j e pctCompl.
Dim i As Integer, j As Integer, pctCompl As Integer
2. Aggiungi un doppio ciclo.
Per i = da 1 a 20
Per j = da 1 a 5
Avanti j
Avanti io
Aggiungi le seguenti righe di codice (a 3, 4 e 5) al ciclo.
3. Utilizzare la funzione RandBetween per importare un numero casuale compreso tra 20 e 100.
Cells(i, j).Value = WorksheetFunction.RandBetween(20, 100)
4. Inizializzare la variabile pctCompl. 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 = "Importazione dati… " & pctCompl & "% completata"
Esempio: per i = 3, j = 1, (3 - 1) * 5 + (1 * 1) = 11% è stato completato.
5. Usiamo il metodo Wait dell'oggetto Application per simulare una macro lunga.
Applicazione.Attendi ora + TimeValue("00:00:01")
6. Per ripristinare il testo predefinito della barra di stato, impostare la proprietà StatusBar su False (fuori dal ciclo).
Application.StatusBar = False
Risultato quando si fa clic sul pulsante di comando sul foglio:
Nota: puoi interrompere una macro in qualsiasi momento premendo Esc o Ctrl + Break. Per un approccio più visivo, consulta il nostro programma Indicatore di progresso.