ScreenUpdating falso hasta que se habilite explícitamente nuevamente
Tengo una macro que llama a una función después de un segundo. Para evitar el parpadeo, quiero desactivar ScreenUpdating
. Desafortunadamente, la propiedad se restablece a True después de salir de test
. ¿Existe alguna forma de desactivar la propiedad hasta que se vuelva a activar explícitamente?
El código es aproximadamente:
public sub test
Application.ScreenUpdating = False
App.OnTime Now + TimeValue("00:00:01"), "EnableScreenUpdating"
end sub
public sub EnableScreenupdating
Application.ScreenUpdating = True
end sub
davy.ai
Sí, hay una forma de desactivar la propiedad
ScreenUpdating
hasta que se active explícitamente nuevamente. Una forma de lograr esto es utilizar una variable global para almacenar el estado de la propiedadScreenUpdating
y luego usarla para activar y desactivar la propiedad según sea necesario.Aquí tienes un ejemplo:
En este ejemplo, la función
EnableScreenUpdating
verifica el valor de la variablegblEnableScreenUpdating
para determinar si se debe habilitar o noScreenUpdating
. Si la variable esTrue
, se habilitaScreenUpdating
, de lo contrario, la función simplemente establece la variable enTrue
.De esta manera, de forma predeterminada,
ScreenUpdating
está desactivado cada vez que se llama atest
y solo se volverá a habilitar si la funciónEnableScreenUpdating
se llama explícitamente congblEnableScreenUpdating
establecido enTrue
.Ten en cuenta que la declaración
Option Explicit
al principio del código obliga a declarar explícitamente todas las variables, lo cual es una buena práctica para evitar errores y garantizar claridad en tu código.