Proprietà di aggiornamento dello schermo VBA

Aggiornamento dello schermo VBA di Excel

L'aggiornamento dello schermo VBA è una proprietà utilizzata per evitare o prevenire i flash di distrazione durante l'esecuzione del codice e renderlo veloce disattivando l'aggiornamento dello schermo. Possiamo disattivare l'aggiornamento dello schermo impostando questa proprietà su false.

Spesso possiamo sentire la schermata di Excel impazzire mentre la macro è in esecuzione e ne siamo quasi frustrati. Ma come affrontiamo queste situazioni e rendere il codice più veloce della solita lentezza?

L'aggiornamento dello schermo è qualcosa che possiamo notare mentre la macro Excel è in esecuzione. Quando l'attività è in esecuzione, possiamo notare che il nostro schermo aggiorna i valori finché la macro non termina l'attività assegnata. Quando il nostro schermo sfarfalla o si aggiorna, rallenta il programma Excel e impiega più tempo del solito per completare l'attività.

In VBA abbiamo una proprietà chiamata "ScreenUpdating" e impostiamo questa proprietà su FALSE in modo che elimini il processo di aggiornamento dello schermo mentre il codice è in esecuzione.

In questo articolo, diremo addio alla visione del dramma d'azione sullo schermo mentre il codice è in esecuzione. Oggi farai funzionare il tuo codice più velocemente e più velocemente del solito.

Quando utilizzare la funzione di aggiornamento dello schermo?

In caso di dubbi su quando utilizzare questa tecnica. Guarda i punti seguenti.

  • Quando si esegue il ciclo attraverso un numero elevato di celle.
  • Invio di e-mail da Excel VBA.
  • Passaggio da una cartella di lavoro Excel a un'altra.
  • Apertura di nuove cartelle di lavoro.

Come utilizzare la funzione di aggiornamento dello schermo nel codice VBA?

Puoi scaricare questo modello VBA ScreenUpdating Excel qui - VBA ScreenUpdating Excel Template

Esempio # 1 - Disattiva l'aggiornamento dello schermo

Per un esempio, guarda il codice seguente.

Codice:

 Sub Screen_Updating () Dim RowCount As Long Dim ColumnCount As Long Dim MyNumber As Long MyNumber = 0 For RowCount = da 1 a 50 For ColumnCount = da 1 a 50 MyNumber = MyNumber + 1 Cells (RowCount, ColumnCount) .Seleziona celle (RowCount, ColumnCount) .Value = MyNumber Next ColumnCount Next RowCount End Sub 

Quanto sopra ha un loop VBA nidificato per inserire i numeri di serie dalla prima colonna alla 50a colonna e di nuovo torna e inserisce il numero di serie a partire da 51 dalla seconda riga alla 50a colonna.

In questo modo, verrà inserito fino a raggiungere la 50a riga.

Mentre questo codice è in esecuzione puoi notare lo sfarfallio dello schermo e non puoi fare altro che guardare questo momento folle.

Per evitare tutto ciò possiamo aggiungere Screen Update a FALSE.

Per accedere alla funzionalità di aggiornamento dello schermo, dobbiamo prima accedere all'oggetto Application.

Come possiamo vedere con l'oggetto Application abbiamo molte proprietà e metodi. Quindi, seleziona Aggiornamento dello schermo dall'elenco IntelliSense.

Nota: è necessario applicare la funzionalità di aggiornamento dello schermo immediatamente dopo la dichiarazione delle variabili.

Dopo aver selezionato la proprietà Aggiornamento schermo, inserire un segno di uguale (=).

Come possiamo vedere due valori booleani cioè FALSE & TRUE.

Per interrompere l'aggiornamento dello schermo impostare lo stato su FALSE.

Ora, quando la macro inizia a funzionare per prima, aggiornerà lo stato di aggiornamento dello schermo su FALSE e procederà alla riga successiva.

Poiché la macro ha eseguito l'aggiornamento dello schermo a FALSE, non consentirà l'aggiornamento dello schermo mentre il codice sta eseguendo la sua attività.

Esempio n. 2 -

Imposta sempre l'aggiornamento dello schermo su TRUE alla fine

Ho visto molte persone impostare l'aggiornamento dello schermo su FALSE ma si sono dimenticati di impostarlo su TRUE alla fine della macro.

Impostare sempre l'aggiornamento dello schermo su TRUE alla fine della macro.

Codice:

 Sub Screen_Updating () Dim RowCount As Long Dim ColumnCount As Long Dim MyNumber As Long Application.ScreenUpdating = False MyNumber = 0 For RowCount = da 1 a 50 For ColumnCount = da 1 a 50 MyNumber = MyNumber + 1 celle (RowCount, ColumnCount) .Seleziona celle (RowCount, ColumnCount) .Value = MyNumber Next ColumnCount Next RowCount Application.ScreenUpdating = True End Sub