Propiedad de actualización de pantalla de VBA

Actualización de pantalla de Excel VBA

La actualización de pantalla de VBA es una propiedad que se utiliza para evitar o prevenir destellos de distracción mientras se ejecuta el código y hacerlo más rápido desactivando la actualización de pantalla. Podemos desactivar la actualización de la pantalla estableciendo esta propiedad como falsa.

Muchas veces podemos sentir que la pantalla de Excel se vuelve loca mientras se ejecuta la macro y eso casi nos frustra. Pero, ¿cómo nos ocupamos de estas situaciones y hacemos que el código se ejecute más rápido de lo habitual?

La actualización de pantalla es algo que podemos notar mientras se ejecuta la macro de Excel. Cuando la tarea se está ejecutando podemos notar que nuestra pantalla está actualizando los valores hasta que la macro finaliza su tarea asignada. A medida que nuestra pantalla parpadea o se actualiza, se ralentiza el programa de Excel y se tarda más de lo habitual en completar la tarea.

En VBA tenemos una propiedad llamada “ScreenUpdating” y establecemos esta propiedad en FALSE para que elimine el proceso de actualización de la pantalla mientras se ejecuta el código.

En este artículo, nos despediremos de ver dramas de acción en pantalla mientras se ejecuta el código. Hoy harás que tu código se ejecute más rápido y más rápido de lo habitual.

¿Cuándo usar la función de actualización de pantalla?

Si tiene alguna duda sobre cuándo utilizar esta técnica. Mire los puntos siguientes.

  • Cuando recorre una gran cantidad de celdas.
  • Envío de correos electrónicos desde Excel VBA.
  • Cambiar entre libros de Excel.
  • Abriendo nuevos libros de trabajo.

¿Cómo usar la función de actualización de pantalla en el código VBA?

Puede descargar esta plantilla de Excel de actualización de pantalla de VBA aquí - Plantilla de Excel de actualización de pantalla de VBA

Ejemplo n. ° 1: desactivar la actualización de la pantalla

Para ver un ejemplo, mire el siguiente código.

Código:

 Sub Screen_Updating () Dim RowCount As Long Dim ColumnCount As Long Dim MyNumber As Long MyNumber = 0 Para RowCount = 1 a 50 Para ColumnCount = 1 a 50 MyNumber = MyNumber + 1 celdas (RowCount, ColumnCount) .Seleccione celdas (RowCount, ColumnCount) .Value = MyNumber Next ColumnCount Siguiente RowCount End Sub 

Lo anterior tiene un bucle VBA anidado para insertar números de serie desde la primera columna a la columna 50 y nuevamente regresa e inserta el número de serie comenzando desde 51 desde la segunda fila hasta la columna 50.

Así, se insertará hasta llegar a la fila 50.

Mientras se ejecuta este código, puede notar que su pantalla parpadea y no puede hacer nada más que ver este momento loco.

Para evitar todo esto, podemos agregar Actualización de pantalla a FALSO.

Para acceder a la función Actualización de pantalla, primero debemos acceder al objeto Aplicación.

Como podemos ver con el objeto Aplicación, tenemos muchas propiedades y métodos. Por lo tanto, seleccione Actualización de pantalla de la lista IntelliSense.

Nota: Debe aplicar la función Actualización de pantalla inmediatamente después de la declaración de las variables.

Después de seleccionar la propiedad Actualización de pantalla, coloque un signo igual (=).

Como podemos ver, dos valores booleanos, es decir, FALSO y VERDADERO.

Para detener la actualización de la pantalla, establezca el estado en FALSE.

Ahora, cuando la macro comience a ejecutarse primero, actualizará el estado de actualización de la pantalla a FALSO y pasará a la siguiente línea.

Dado que la macro ejecutó la Actualización de pantalla a FALSO, no permitirá que la pantalla se actualice mientras el código está ejecutando su tarea.

Ejemplo n. ° 2 -

Establecer siempre la actualización de la pantalla en VERDADERO al final

He visto a muchas personas configurar la Actualización de pantalla en FALSO, pero se olvidó de volver a configurarla en VERDADERO al final de la macro.

Siempre configure la Actualización de pantalla de nuevo a VERDADERO al final de la macro.

Código:

 Sub Screen_Updating () Dim RowCount As Long Dim ColumnCount As Long Dim MyNumber As Long Application.ScreenUpdating = False MyNumber = 0 For RowCount = 1 to 50 For ColumnCount = 1 to 50 MyNumber = MyNumber + 1 Cells (RowCount, ColumnCount) .Seleccionar celdas (RowCount, ColumnCount) .Value = MyNumber Siguiente ColumnCount Siguiente RowCount Application.ScreenUpdating = True End Sub