Pantalla mientras ejecuta macro

09/03/2005 - 10:20 por Luiszx | Informe spam
Tengo una macro que realiza una serie de acciones entre varias hojas del
libro. Cuando se ejecuta se ven los saltos entre hojas al seleccionar,
copiar, pegar,.. ¿Se puede evitar que se vean estos saltos y en su lugar
aparezca una pantalla en la que se indique algo así como: "Espere unos
segundos"?
 

Leer las respuestas

#1 KL
09/03/2005 - 11:21 | Informe spam
Hola Luiszx,

Unas cuantas cosas:

se ven los saltos entre hojas al seleccionar,
copiar, pegar,..



Te recuerdo q para manipular libros, hojas, rangos, datos, etc en la moyoria
absoluta de los casos no es necesario seleccionar, ni activarlos.

¿Se puede evitar que se vean estos saltos



- Lo de arriba puede ser tu primera oportunidad para eliminar/reducir el
parpadeo.

- Otra cosa q podrias hacer es incluir en tu codigo (al principio y al
final) las siguientes instrucciones:

Application.ScreenUpdating=False
'Tu codigo va aqui
Application.ScreenUpdating=True

esto congelara la pantalla antes de correr el macro y la descongelara cuando
se hayan realizado todas las modificaciones.

y en su lugar
aparezca una pantalla en la que se indique algo así como: "Espere unos
segundos"?



1) Supongamos q tu macro se llama MiMacro y se encuentra en algun modulo q
no sea de hoja, libro o formulario. Modificalo para q quede mas o menos asi:

'Inicio Codigo -
Sub MiMacro()
Application.ScreenUpdating=False
'Tu codigo va aqui
Application.ScreenUpdating=True
End Sub
'Fin Codigo -

2) Crea un Formulario y ponle un nombre, digamos UserForm1
3) Dentro del formulario introduce una Etiqueta (Label) con el texto:"Espere
unos segundos"
4) En el modulo VBA de UserForm1 pon el siguiente codigo:

'Inicio Codigo UserForm1-
Private Sub UserForm_QueryClose _
(Cancel As Integer, CloseMode As Integer)
' Prevents use of the Close button
If CloseMode = vbFormControlMenu Then
Cancel = True
End If
End Sub

Private Sub UserForm_Activate()
Call MiMacro
Unload Me
End Sub
'Fin Codigo UserForm1-

5) Ahora crea el siguiente macro en cualquier modulo:

'Inicio Codigo -
Sub Lanzar_MiMacro()
UserForm1.Show
End Sub
'Fin Codigo -

6) Usa este ultimo macro para lanzar tu codigo.

Saludos,
KL

Preguntas similares