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.

Excel VBA StatusBar Property Example

Aggiungere le seguenti righe di codice per il pulsante di comando:

  1. 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
  1. 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.

  1. Utilizzare la funzione RANDBETWEEN per importare un numero casuale compreso tra 20 e 100.

Cells(i, j).Value = WorksheetFunction.RandBetween(20, 100)
  1. 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.

  1. Usiamo il metodo Wait dell’oggetto Application per simulare un lungo macro.

Application.Wait Now + TimeValue("00:00:01")
  1. 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:

Excel VBA StatusBar Property Result

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].