dudas con ScreenUpdating

06/12/2006 - 22:56 por Ivan | Informe spam
hola a todos de nuevo

a ver si me podeis echar una mano para aclarar varias duda, respecto al
uso de Application.ScreenUpdating, que llevo arrastrando desde hace
tiempo.

1º la mas basica seria que, por lo que creo recordar, en la ayuda te
aconsejan que, si lo pones a false por alguna causa (en mi caso en gran
parte de los codigos) se vuelva a asignar el valor True a
ScreenUpdating al acabar de realizar la tarea para la que lo has puesto
a false. En general suelo hacerlo, por si acaso.

el problema estaria en que cuando interrumpes la ejecucion por alguna
causa (pej: Exit Sub) lo suyo supongo que seria volverlo a poner a true
(si lo has puesto a false, por supuesto) antes de salir, lo cual no
deja de ser un tanto engorroso en algunas ocasiones (al menos para mi )

pero, dado que en la mayoria de las ayudas de los expertos en el foro,
no se suele volver a poner a True, supongo que no debe ser demasiado
importante.

esto es lo que me gustaria saber: ¿hasta que punto y por que puede
suponer algun perjuicio el no volver a ponerlo a true, o si existen
situaciones especiales en la que si conviene?

2ª duda: si un procedimiento que llama a otro tiene asignado False a
ScreenUpdating ¿es valido tambien a la ejecucion del proc./funcion
llamado.?.

y, si dentro de procedimiento (o funcion) llamado tambien se pone a
false, pero se vuelve a poner a true al salir de el, ¿afecta al estado
de la propiedad en el procedimiento llamante?

bueno, no se si me entiende del todo, pero mas o menos estas son las
dudas que no consigo aclarar rastreando por ahi. Si podeis echarme una
mano os lo agradezco.

un saludo y hasta pronto
Ivan
 

Leer las respuestas

#1 Héctor Miguel
07/12/2006 - 03:21 | Informe spam
hola, Ivan !

1) [hasta donde se]...
a) mientras 'persista' una instruccion: -> Application.ScreenUpdating = False
a menos que otro codigo cambie a: -> Application.ScreenUpdating = True
[incluso por codigos intermedios/llamados/... o se termine de ejecutar el codigo]...
no se actualiza 'el refresco' de la pantalla [ni ves lo que hace el codigo en la ventana del excel]
b) [o sea]... el 'refresco' de la pantalla se devuelve a True automaticamente al terminarse la ejecucion de codigo
a menos que... la hubieras puesto en false al usar metodos de eventos [como un 'printpreview']
y NO la hubieras regresado a True [cosa que 'en este preciso caso'... no sucede de manera 'automatica'] :-((
-> recuerda la conversacion que 'sostuvimos' al respecto en septiembre -> 'vista previa sin cerrar formulario' :D

2) de acuerdo con el punto anterior, para [tratar de] 'responder' a tu segunda interrogante...
-> prueba con la siguiente 'secuencia' de mensajes por macro [unas llaman a la que sigue] PERO... en dos 'versiones':
a) primero ejecuta la macro 'A' asi, simple y llana [directa y sin interrupciones]
b) la segunda vez, procura 'mover' la posicion de cada cuadro de mensaje para que aprecies el 'congelamiento' de la pantalla :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Sub A()
Application.ScreenUpdating = False
MsgBox "Llamando al procedimiento B"
B
MsgBox "El show se ha terminado !!!"
End Sub
Sub B()
MsgBox "A la orden, jefe !"
MsgBox "Ahora viene el procedimiento que sigue... el C"
C
End Sub
Sub C()
MsgBox "Tarde... pero sin sueño :)"
End Sub

__ la consulta original __
__ 1 __
... duda, respecto al uso de Application.ScreenUpdating, que llevo arrastrando desde hace tiempo.
... en la ayuda te aconsejan que, si lo pones a false por alguna causa (en mi caso en gran parte de los codigos)
se vuelva a asignar el valor True a ScreenUpdating al acabar de realizar la tarea... En general suelo hacerlo, por si acaso.
el problema estaria en que cuando interrumpes la ejecucion por alguna causa (pej: Exit Sub)
lo suyo supongo que seria volverlo a poner a true (si lo has puesto a false, por supuesto) antes de salir
lo cual no deja de ser un tanto engorroso en algunas ocasiones (al menos para mi )
pero, dado que en la mayoria de las ayudas... en el foro, no se suele volver a poner a True
supongo que no debe ser demasiado importante.
esto es lo que me gustaria saber: hasta que punto y por que puede suponer algun perjuicio el no volver a ponerlo a true
o si existen situaciones especiales en la que si conviene?


__ 2 __
... si un procedimiento que llama a otro tiene asignado False a ScreenUpdating es valido tambien a la ejecucion del proc./funcion llamado.?.
y, si dentro de procedimiento (o funcion) llamado tambien se pone a false, pero se vuelve a poner a true al salir de el
afecta al estado de la propiedad en el procedimiento llamante? [...]

Preguntas similares