Actualització de la pantalla VBA | Accelerar el procés d’execució del codi

Actualització de la pantalla VBA d'Excel

Actualització de la pantalla VBA és una propietat que s’utilitza per evitar o evitar flaixos de distracció mentre s’executa el codi i fer-lo ràpid desactivant l’actualització de pantalla. Podem desactivar l’actualització de la pantalla configurant aquesta propietat com a falsa.

Sovint podem sentir que la pantalla Excel es torna boja mentre la macro s’executa i gairebé ens sentim frustrats. Però, com podem fer front a aquestes situacions i fer que el codi funcioni més ràpid que el que és lent?

L’actualització de pantalla és una cosa que podem notar mentre s’executa la macro Excel. Quan s’executa la tasca, podem notar que la nostra pantalla actualitza els valors fins que la macro finalitza la tasca assignada. A mesura que la nostra pantalla parpelleja o refresca, el programa Excel es desaccelera i triga més temps del normal a completar la tasca.

A VBA tenim una propietat anomenada “ScreenUpdating” i establim aquesta propietat a FALS per eliminar el procés d’actualització de pantalla mentre s’executa el codi.

En aquest article, ens acomiadarem de la visualització de drames d’acció en pantalla mentre el codi s’executa. Avui faràs que el teu codi funcioni més ràpidament que el teu temps habitual.

Quan s'utilitza la funció d'actualització de pantalla?

Si teniu cap dubte sobre quan utilitzar aquesta tècnica. Consulteu els punts següents.

  • Quan passeu per un gran nombre de cel·les.
  • Enviament de correus electrònics des d'Excel VBA.
  • Canvi entre llibres d’excel.
  • S’obren llibres de treball nous.

Com s'utilitza la funció d'actualització de pantalla al codi VBA?

Podeu descarregar aquesta plantilla Excel de VBA ScreenUpdating Excel: VBA ScreenUpdating Excel Template

Exemple 1: desactivar l'actualització de la pantalla

Per obtenir un exemple, mireu el codi següent.

Codi:

 Sub Screen_Updating () Dim RowCount As Long Dim ColumnCount Long Long My MyNumber As Long MyNumber = 0 Per a RowCount = 1 a 50 Per a ColumnCount = 1 a 50 MyNumber = MyNumber + 1 Cells (RowCount, ColumnCount). Seleccioneu Cells (RowCount, ColumnCount). .Valor = El meu número Següent número de columnes Següent final de compte de files Sub 

L'anterior ha inclòs un bucle VBA per inserir números de sèrie de la primera columna a la columna 50 i torna a tornar i inserir el número de sèrie a partir del 51 des de la segona fila fins a la columna 50.

Així, s’inserirà fins que arribi a la cinquantena fila.

Mentre s’executa aquest codi, podeu notar que la pantalla parpelleja i no podeu fer res a part de veure aquest moment boig.

Per evitar tot això, podem afegir Screen Updating a FALSE.

Per accedir a la funció d’actualització de pantalla primer, hem d’accedir a l’objecte Application.

Com podem veure amb l'objecte Application, tenim moltes propietats i mètodes. Per tant, seleccioneu Actualització de pantalla a la llista IntelliSense.

Nota: Heu d'aplicar la funció d'actualització de pantalla immediatament després de la declaració de les variables.

Després de seleccionar la propietat Actualització de pantalla, poseu un signe igual (=).

Com podem veure dos valors booleans, és a dir, FALS I TRUE.

Per aturar l'actualització de la pantalla, configureu l'estat a FALS.

Ara, quan la macro comença a funcionar primer, actualitzarà l'estat d'actualització de la pantalla a FALS i procedirà a la següent línia.

Com que la macro s'ha executat Actualització de pantalla a FALS, no permetrà que la pantalla s'actualitzi mentre el codi executa la seva tasca.

Exemple 2:

Definiu sempre l'actualització de pantalla a TRUE al final

He vist molta gent configurar l’actualització de pantalla com a FALS, però m’he oblidat de tornar-lo a TRUE al final de la macro.

Estableix sempre l'actualització de pantalla a TRUE al final de la macro.

Codi:

 Sub Screen_Updating () Dim RowCount Long Dim ColumnCount Long Long My My Number As Long Application.ScreenUpdating = False MyNumber = 0 Per a RowCount = 1 a 50 per a ColumnCount = 1 a 50 MyNumber = MyNumber + 1 cel·les (RowCount, ColumnCount). (RowCount, ColumnCount) .Value = El meu número següent ColumnCount següent RowCount següent Application.ScreenUpdating = Sub finalitat veritable