Proceso de comandos sin moverse por las hojas.-

31/07/2008 - 17:34 por JC | Informe spam
Hola Amigos:

Hace algún tiempo, vi en este mismo foro, una forma de que las macros
realizarán el proceso de los comandos, pero sin moverse por las hojas.
Me intento explicar... Tengo macros, donde realizo "copy&paste" de unas
hojas a otras de diferetes rangos, incluso de borrado y pegado de la hojas
enteras, con filtrado de columnas. Y al ejecutar las macros (botón), empieza
un viaje de "pantallazos" por todas las hojas que menciona la macro, lo que
también me da la sensación de una demora en el resultado... que tarda más por
tener que ir de una hoja a otra, vaya...

Espero haberme explicado con claridad y que me podais ayudar una vez más.
Si necesitais que os ponga parte de una macro o un ejemplo, no dejeis de
comentarmelo, por favor.

Espero que me sepais disculpar, por si es una consulta muy banal y habitual
y por las posibles molestias.

Recibid un agradecido saludo.

JC

Preguntas similare

Leer las respuestas

#1 JC
31/07/2008 - 18:10 | Informe spam
Genial Isaac,

Muchas gracias... Lo malo es que soy de natural "bastante" torpe.
Serías tan amable, por favor, de en la siguiente macro de ejemplo, donde
iría cada uno de estos valores y como se escribirían, para que pasara de la
hoja "EJE" a la hoja de "SUB_EJE", sin el "meneo" de pantallazos.

Mil gracias y recibe un abrazo

JC
Sub EJE()

Sheets("EJE").Select
ActiveSheet.Select
Selection.Copy
Sheets("DATO").Select
Range("AA1").Select
ActiveSheet.Paste
Sheets("EJE").Select
Range("I3:I11").Select
Selection.Copy
Sheets("SUB_EJE").Select
Range("I3:I11").Select
ActiveSheet.Paste
Sheets("SUCIO").Select
Range("I15").Select
Selection.Copy
Sheets("EJE").Select
Range("B5").Select
ActiveSheet.Paste
Sheets("DATO").Select
Range("AA1").Select
Selection.Copy
Sheets("SUB_EJE").Select
Range("I8").Select
ActiveSheet.Paste
Sheets("EJE").Select
Range("F3:G11").Select
Selection.Copy
Range("B5").Select
Sheets("SUB_EJE").Select
Range("F3:G11").Select
ActiveSheet.Paste
BORRAR

Cells.Select
Application.CutCopyMode = False
Selection.AutoFilter
Range("L1").Select
ActiveWindow.LargeScroll ToRight:=1

Selection.AutoFilter Field:, Criteria1:=Range("AA1"), Operator:=xlAnd

Range("N:N").Select
Selection.Copy
Sheets("SUCIO").Select
Range("A:A").Select
ActiveSheet.Paste
Selection.AdvancedFilter Action:=xlFilterCopy, Unique:=True
Range("B6:B60").Select
Selection.Copy
Range("A1").Select
Sheets("SUB_EJE").Select
Range("N:N").Select
ActiveSheet.Paste
DATO_2
Sheets("SUB_EJE").Select
Range("B5").Select

End Sub

"Isaac Gomez" escribió:

Lo que en lo personal he realizado es hacer que el valor ScreenUpdating de
la aplicación sea False en tanto se realiza la operación, solo recuerda que
al finalizar el "cambiadero" de hojas, el valor debe de ser devuelto a True
para que se pueda actualizar correctamente.

Espero que esto te ayude.
Saludos.

"JC" escribió en el mensaje de noticias
news:
> Hola Amigos:
>
> Hace algún tiempo, vi en este mismo foro, una forma de que las macros
> realizarán el proceso de los comandos, pero sin moverse por las hojas.
> Me intento explicar... Tengo macros, donde realizo "copy&paste" de unas
> hojas a otras de diferetes rangos, incluso de borrado y pegado de la hojas
> enteras, con filtrado de columnas. Y al ejecutar las macros (botón),
> empieza
> un viaje de "pantallazos" por todas las hojas que menciona la macro, lo
> que
> también me da la sensación de una demora en el resultado... que tarda más
> por
> tener que ir de una hoja a otra, vaya...
>
> Espero haberme explicado con claridad y que me podais ayudar una vez más.
> Si necesitais que os ponga parte de una macro o un ejemplo, no dejeis de
> comentarmelo, por favor.
>
> Espero que me sepais disculpar, por si es una consulta muy banal y
> habitual
> y por las posibles molestias.
>
> Recibid un agradecido saludo.
>
> JC

Respuesta Responder a este mensaje
#2 Juan M
31/07/2008 - 18:14 | Informe spam
Hola,

Para evitar que se muestren los cambios de hojas, lo mejor sería no hacer
cosas del tipo
range("A1").select
Selection.copy

y hacer cosas del tipo
range("A1").copy ..

Con esto evitas en la mayoría de casos los pantallazos.
Otra cosa que deberías añadir, ya que alguna operación es necesario hacer la
selección o tener la hoja activa es emplear
Application.ScreenUpdating=False

Si tu macro enlza con otras es probable que debas/quieras declarar
explícitamente la activación del refresco de pantalla
Application.ScreenUpdating=True

Sino lo recupera al terminar la macro.

Un saludo,
Juan

"JC" < escribió
Hola Amigos:

Hace algún tiempo, vi en este mismo foro, una forma de que las macros
realizarán el proceso de los comandos, pero sin moverse por las hojas.
Me intento explicar... Tengo macros, donde realizo "copy&paste" de unas
hojas a otras de diferetes rangos, incluso de borrado y pegado de la hojas
enteras, con filtrado de columnas. Y al ejecutar las macros (botón),
empieza
un viaje de "pantallazos" por todas las hojas que menciona la macro, lo
que
también me da la sensación de una demora en el resultado... que tarda más
por
tener que ir de una hoja a otra, vaya...

Espero haberme explicado con claridad y que me podais ayudar una vez más.
Si necesitais que os ponga parte de una macro o un ejemplo, no dejeis de
comentarmelo, por favor.

Espero que me sepais disculpar, por si es una consulta muy banal y
habitual
y por las posibles molestias.

Recibid un agradecido saludo.

JC
Respuesta Responder a este mensaje
#3 JC
01/08/2008 - 12:39 | Informe spam
Hola Juan M:

Muchas gracias por tus dos consejos y soluciones. De momento el que he
venido a aplicar en uno de los modulos es la 2ª y va de "LUJO".
La 1ª ya la iré aplicando poco a poco, para ello debo de "purgar" casi todo
el código de la herramienta y voy a tardar "un poco" más... :)

Lo dicho Juan, muchas y sinceras gracias y un abrazo muy fuerte desde Madrid.

JC

"Juan M" escribió:

Hola,

Para evitar que se muestren los cambios de hojas, lo mejor sería no hacer
cosas del tipo
range("A1").select
Selection.copy

y hacer cosas del tipo
range("A1").copy ..

Con esto evitas en la mayoría de casos los pantallazos.
Otra cosa que deberías añadir, ya que alguna operación es necesario hacer la
selección o tener la hoja activa es emplear
Application.ScreenUpdating=False

Si tu macro enlza con otras es probable que debas/quieras declarar
explícitamente la activación del refresco de pantalla
Application.ScreenUpdating=True

Sino lo recupera al terminar la macro.

Un saludo,
Juan

"JC" < escribió
> Hola Amigos:
>
> Hace algún tiempo, vi en este mismo foro, una forma de que las macros
> realizarán el proceso de los comandos, pero sin moverse por las hojas.
> Me intento explicar... Tengo macros, donde realizo "copy&paste" de unas
> hojas a otras de diferetes rangos, incluso de borrado y pegado de la hojas
> enteras, con filtrado de columnas. Y al ejecutar las macros (botón),
> empieza
> un viaje de "pantallazos" por todas las hojas que menciona la macro, lo
> que
> también me da la sensación de una demora en el resultado... que tarda más
> por
> tener que ir de una hoja a otra, vaya...
>
> Espero haberme explicado con claridad y que me podais ayudar una vez más.
> Si necesitais que os ponga parte de una macro o un ejemplo, no dejeis de
> comentarmelo, por favor.
>
> Espero que me sepais disculpar, por si es una consulta muy banal y
> habitual
> y por las posibles molestias.
>
> Recibid un agradecido saludo.
>
> JC



Respuesta Responder a este mensaje
#4 JC
01/08/2008 - 12:43 | Informe spam
Holaaa Isaac Gomez "Maquinón":

Jajajaja, ahora ya va como "la seda", acabo de aplicar los comandos, según
me explicabas en uno de los modulos y aparte de no pegar ya "pantallazos", va
mucho más fluido y rápido.

Muchisimas gracias por tu paciencia e interés.

Tengo que felicitar también a Juan M, que ha coincidido también contigo en
la misma solución, tan sencilla y tan práctica.

No me canso de darte las Gracias Isaac, recibe desde Madrid, un abrazo
fuerte con todas mis ganas.

JC

"Isaac Gomez" escribió:

Sería asi:


Sub EJE()
Application.ScreenUpdating = False
... ' Todo el código
Application.ScreenUpdating = True
End Sub

Saludos.

"JC" escribió en el mensaje de noticias
news:
> Genial Isaac,
>
> Muchas gracias... Lo malo es que soy de natural "bastante" torpe.
> Serías tan amable, por favor, de en la siguiente macro de ejemplo, donde
> iría cada uno de estos valores y como se escribirían, para que pasara de
> la
> hoja "EJE" a la hoja de "SUB_EJE", sin el "meneo" de pantallazos.
>
> Mil gracias y recibe un abrazo
>
> JC
> Sub EJE()
>
> Sheets("EJE").Select
> ActiveSheet.Select
> Selection.Copy
> Sheets("DATO").Select
> Range("AA1").Select
> ActiveSheet.Paste
> Sheets("EJE").Select
> Range("I3:I11").Select
> Selection.Copy
> Sheets("SUB_EJE").Select
> Range("I3:I11").Select
> ActiveSheet.Paste
> Sheets("SUCIO").Select
> Range("I15").Select
> Selection.Copy
> Sheets("EJE").Select
> Range("B5").Select
> ActiveSheet.Paste
> Sheets("DATO").Select
> Range("AA1").Select
> Selection.Copy
> Sheets("SUB_EJE").Select
> Range("I8").Select
> ActiveSheet.Paste
> Sheets("EJE").Select
> Range("F3:G11").Select
> Selection.Copy
> Range("B5").Select
> Sheets("SUB_EJE").Select
> Range("F3:G11").Select
> ActiveSheet.Paste
> BORRAR
>
> Cells.Select
> Application.CutCopyMode = False
> Selection.AutoFilter
> Range("L1").Select
> ActiveWindow.LargeScroll ToRight:=1
>
> Selection.AutoFilter Field:, Criteria1:=Range("AA1"),
> Operator:=xlAnd
>
> Range("N:N").Select
> Selection.Copy
> Sheets("SUCIO").Select
> Range("A:A").Select
> ActiveSheet.Paste
> Selection.AdvancedFilter Action:=xlFilterCopy, Unique:=True
> Range("B6:B60").Select
> Selection.Copy
> Range("A1").Select
> Sheets("SUB_EJE").Select
> Range("N:N").Select
> ActiveSheet.Paste
> DATO_2
> Sheets("SUB_EJE").Select
> Range("B5").Select
>
> End Sub
>
> "Isaac Gomez" escribió:
>
>> Lo que en lo personal he realizado es hacer que el valor ScreenUpdating
>> de
>> la aplicación sea False en tanto se realiza la operación, solo recuerda
>> que
>> al finalizar el "cambiadero" de hojas, el valor debe de ser devuelto a
>> True
>> para que se pueda actualizar correctamente.
>>
>> Espero que esto te ayude.
>> Saludos.
>>
>> "JC" escribió en el mensaje de noticias
>> news:
>> > Hola Amigos:
>> >
>> > Hace algún tiempo, vi en este mismo foro, una forma de que las macros
>> > realizarán el proceso de los comandos, pero sin moverse por las hojas.
>> > Me intento explicar... Tengo macros, donde realizo "copy&paste" de unas
>> > hojas a otras de diferetes rangos, incluso de borrado y pegado de la
>> > hojas
>> > enteras, con filtrado de columnas. Y al ejecutar las macros (botón),
>> > empieza
>> > un viaje de "pantallazos" por todas las hojas que menciona la macro, lo
>> > que
>> > también me da la sensación de una demora en el resultado... que tarda
>> > más
>> > por
>> > tener que ir de una hoja a otra, vaya...
>> >
>> > Espero haberme explicado con claridad y que me podais ayudar una vez
>> > más.
>> > Si necesitais que os ponga parte de una macro o un ejemplo, no dejeis
>> > de
>> > comentarmelo, por favor.
>> >
>> > Espero que me sepais disculpar, por si es una consulta muy banal y
>> > habitual
>> > y por las posibles molestias.
>> >
>> > Recibid un agradecido saludo.
>> >
>> > JC
>>

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida