Aggiornamento dello schermo VBA - Accelerare il processo di esecuzione del codice

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 lo schermo di Excel impazzire mentre la macro è in esecuzione, e quasi ci sentiamo 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. Lo sfarfallio o l'aggiornamento dello schermo provoca il rallentamento del programma Excel e richiede 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 tuo solito tempo.

Quando utilizzare la funzione di aggiornamento dello schermo?

Supponi di avere qualche dubbio su quando usare 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?

Esempio # 1 - Disattiva l'aggiornamento dello schermo

Ad 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 ciclo VBA annidato 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 prima alla funzione di aggiornamento dello schermo, è necessario accedere all'oggetto Applicazione.

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, ovvero FALSE e TRUE.

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

Ora, quando la macro inizia a essere eseguita 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

Articoli interessanti...