Pregunta:
¿como hacer que las macros en Excel vayan mas rapidas?
kal-el1
2012-10-23 09:50:31 UTC
hola, quisiera saber como hao que mis macros en excel vayan mas rapido , es decir , estoy haciendo un trabajo que si le doy a un boton tiene que poner los datos de esa hoja en otras 2 ,pero el excel va muy lento y me aparace el relojito de arena y se tarda mucho, quisiera saber como agilizarlo.
saludos
Tres respuestas:
?
2012-10-23 12:47:52 UTC
Hola,



1. Apagar el parpadeo de pantalla

Lo hacemos con la instrucción: Application.screenupdating=False

Evita los movimientos de pantalla que se producen al seleccionar celdas, hojas y libros



2. Apagar los cálculos automáticos

Lo hacemos con la instrucción: Application.calculation=xlCalculationManual

Evita que se recalcule todo cada vez que se pegan o modifican datos



3. Apagar los eventos automáticos

Lo hacemos con la instrucción: Application.EnableEvents=False

Evita que se disparen macros de evento si las hubiere



4. Apagar visualización de saltos de página

Lo hacemos con la instrucción: ActiveSheet.DisplayPageBreaks = False

Sirve para evitar algunos problemas de compatibilidad entre macros Excel 2003 vs. 2007/2010



En resumen, siempre debemos comenzar las macros así:



Application.screenupdating=False

Application.calculation=xlCalculationManual

Application.EnableEvents=False

ActiveSheet.DisplayPageBreaks = False

.



AL FINAL DE LAS MACROS



5. Borrar contenido de portapapeles

Lo hacemos con la instrucción: Application.CutCopyMode = False

Permite limpiar el portapapeles en caso de haber copiado datos

Además debemos volver a su estado original las instrucciones con las que comenzamos la macro.



En resumen, siempre debemos finalizar las macros así:



Application.screenupdating=True

Application.calculation=xlCalculationAutomatic

Application.EnableEvents=True

ActiveSheet.DisplayPageBreaks = True

Application.CutCopyMode = False



OTRAS TECNICAS UTILES



6. Usar la instrucción WITH

Se usa para evitar tener que referenciar un mismo objeto muchas veces



Ejecución leeenta…

Sheets(1).Range(“A1:Z1″).Font.Italic = True

Sheets(1).Range(“A1:Z1″).Font.Interior.Color = vbRed

Sheets(1).Range(“A1:Z1″).MergeCells = True



Ejecución rápida!

With Sheets(1).Range(“A1:Z1″)

.Font.Italic = True

.Font.Interior.Color = vbRed

.MergeCells = True

End With



7. Evitar la instrucción SELECT



Se genera sobre todo en las macros grabadas

La mayoría de las veces no es necesario seleccionar para cumplir el objetivo



Ejecución leeenta…

Range(“E1″).Select

Selection.Copy

Range(“D10″).Select

ActiveSheet.Paste



Ejecución rápida!

Range(“E1″).Copy Range(“D10”)



8. Evitar loops FOR EACH



Tener que ir celda por celda consume mucho tiempo

Se puede resolver el problema de forma más directa!



Ejecución leeenta…

For Each cell In Range(“A1:A10000″)

If cell = Empty Then cell = 0

Next cell



* Los loops siempre son leeentos

* En este caso recorre 10.000 celdas!



Ejecución rápida!

Existen diversas formas de evitar los loops. La solución dependerá del caso concreto en cuestión. Generalmente se usan algunas de estas técnicas: agrupar, ir a especial, filtros, filtros avanzados. La idea es poder realizar la acción sobre todos los elementos al mismo tiempo, en lugar de tener que ir uno a uno!



9. Usar las funciones nativas de Excel

No quieras reinventar la rueda. Quizás ya exista una función Excel que lo haga!

Las macros siempre ejecutan más rápido las funciones nativas de Excel



Ejecución leeenta…

mProducto = 1

For i = 1 to 100

mProducto = mProducto * Cells(3,i)

Next



Ejecución rápida!

mProducto = Application.WorkSheetFunction.Product(Range(“C1:C100″))





10. Forzar la declaración de variables

En el editor VBA, menú Herramientas > Opciones > pestaña Editor > marcar “Requerir declaración de variables”

Luego usar la variable correcta: si es fecha usar Date, si es texto usar String, si es valor usar Long…

Evitar el uso de la variable Variant ya que insume más recursos…

Usar nombres de variables que nos digan algo (por ej. “UltimaFila” o “FilaZ” en lugar de “f” o “uf”)



11. Escribir las macros en módulos y no en hojas



Las hojas pueden ser borradas o copiadas y esto generaría problemas inesperados



12. Separar el proceso en varias macros (divide y conquistarás)



Si tu macro hace muchas cosas conviene separarla en muchas macros pequeñas y luego unirlas

Es más fácil para controlar, auditar, etc…

Además te permite luego poder rehusar alguna parte del proceso en otras macros



Macro muy laaarga…

Sub MegaMacro()

‘Codigo limpia datos

’Codigo carga datos

’Código arregla datos

’Código arma reporte

End Sub()



Mejor dividir en diferentes macros para cada proceso

Sub LimpiaDatos()

‘Codigo…

End Sub Sub



CargaDatos()

‘Codigo…

End Sub



Sub ArreglaDatos()

‘Codigo…

End Sub



Sub ArmaReporte()

‘Codigo…

End Sub





Finalmente podemos unir todos los procesos

Sub ProcesoCompleto()

Call LimpiaDatos

Call CargaDatos

Call ArreglaDatos

Call ArmaReporte

End Sub()



13. Ser cuidadoso con la instrucción ON ERROR RESUME NEXT

Esta instrucción hace que la macro siga avanzando aunque encuentre un error

En algunos casos esto hará que se ignoren errores que no deberían ser ignorados



14. Comentar bien las macros

Añadir comentarios te ayudará a describir y recordar la lógica y te ahorrará mucho tiempo!



Saludos
2017-03-02 20:39:45 UTC
estoy trabajando con una libro de 3000 hojas todas las nuemre del a 2500 entre ellas tengo a million-A a million-B y agunos otros mas como hago para que no tenga que estar buscando en el Vbasic una venta con pregunta ? urgeme
2016-07-13 06:39:38 UTC
Si quieres enterarse cómo capturar imágenes nítidas , claras , entonces el libro Manual de Técnica Fotográfica de aquí https://tr.im/18qhg es lo que necesitas .

Del manual Manual de Técnica Fotográfica aprenderás porqué las fotografías salen borrosas , movidas o con ruido y qué debes hacer para evitarlo .

Los libros y manuales siguen siendo la principal fuente de aprendizaje , de toda la vida . Un manual de fotografía es muy efectivo porque puede ser consultado siempre y puede ser abordado al ritmo que al propio lector le quede cómodo . Como en todos los medios , se debe apuntalar un buen software de formación y el mejor programa de formación es el libro Manual de Técnica Fotográfica .


Este contenido se publicó originalmente en Y! Answers, un sitio web de preguntas y respuestas que se cerró en 2021.
Loading...