Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
macros excel
Esta información es muy útil para quienes manejen el tema de programación de
macros excel. ¿Tus macros van lentas? ¿Problemas a la hora de ejecutarlas? ¿Cuáles
son las técnicas recomendadas?
Respecto de usar menos código dependerá de las habilidades del programador excel en
cuestión. Hemos visto infinidad de casos donde 30 o 40 líneas de código VBA se
pueden resumir en 5 o 6 líneas (algo similar pasa con las fórmulas excel). Siempre hay
macros o fórmulas que hacen la tarea de forma más directa y sin dar tantas vueltas!
Hay algunas instrucciones puntuales que siempre conviene usar y que van a acelerar y
optimizar nuestras macros en todos los casos. Vamos a ver repasar algunas técnicas
puntuales que podemos usar al comienzo, durante y al final de nuestras macros.
Application.screenupdating=False
Application.calculation=xlCalculationManual
Application.EnableEvents=False
ActiveSheet.DisplayPageBreaks = False
.
Application.screenupdating=True
Application.calculation=xlCalculationAutomatic
Application.EnableEvents=True
ActiveSheet.DisplayPageBreaks = True
Application.CutCopyMode = False
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
Ejecución leeenta…
Range(“E1″).Select
Selection.Copy
Range(“D10″).Select
ActiveSheet.Paste
Ejecución rápida!
Range(“E1″).Copy Range(“D10”)
Ejecución leeenta…
For Each cell In Range(“A1:A10000″)
If cell = Empty Then cell = 0
Next cell
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!
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″))
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”)
Las hojas pueden ser borradas o copiadas y esto generaría problemas inesperados
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
Sub ArreglaDatos()
‘Codigo…
End Sub
Sub ArmaReporte()
‘Codigo…
End Sub
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
Podrías tener errores (bugs) y no enterarte!
58
losvangoh dice:
Responder
ramon dice:
Tengo una macro QUE en excel 2003 que corre muy rapida… basicamente lo
que hace es copiar una formula en una columna.. copiar esa columna en la
siguiente columna, copiar a solo valores la anterior (para que no queden
formulas una vez hecho el calculo)… y asi sucesivamebte hasta 100 columnas.
eso si . son 50.000 filas
Eso en excel 2003 corre muy bien .. PERO EN EXCEL 2007 SE SATURA Y
EMPIEZAN A SALIR “RECURSOS INSUFICIENTES…”
Responder
todoexcel dice:
Edgar L dice:
TITO dice:
quiza tengas que convertir el libro excel para que deje de estar en modo
compatibilidad.
Saludos
Responder
CAMILA dice:
Responder
Laura dice:
Responder
Edgar L dice:
Hola Laura,
Saludos.
Norma dice:
Responder
Pingback: Anónimo
David dice:
Responder
fadia dice:
hola, sera que alguien me podria ayudar con esto? tengo un archivo de excel con
macros. al abrirlo me sale un error de compilacion en modulo oculto: General
TD y no me permite utilizar los complementos, alguien sabe que puedo hacer?
gracias
Responder
todoexcel dice:
CarlosR2 dice:
Responder
Responder
Hola. Tengo una macro que hice en excel 2010, pero por razones de equipo
ahora utilizo el ofice 2007, la macro corre bien pero no me realiza el proceso
completo, me genera datos basura. Pregunto, ¿ Acaso las macros hechas en
office 2010, no son compatibles del todo con el office 2007? O a caso el Office
2007 no tiene las misma funciones del 2010 para ejecutar correctamente la
macro? ¿ Como resuelvo esto?
Responder
todoexcel dice:
Los que comparten el conocimiento sin esperar nada a cambio. muchas gracias
por esta información tan valiosa
Responder
Gerard dice:
Hola.
saludos
Responder
todoexcel dice:
Gerard dice:
saludos
Responder
Jacvar dice:
Hola, quisiera que alguien pudiese ayudarme, he hecho una serie de macros que
buscan datos en una BD SqlServer y los copias en hojas de excel, luego con los
datos de las hojas aplico calculos entre ellos, pero tengo un problema, debo
ejecutar dos o tres veces las macros porque al parecer no actualiza los datos de
una vez si cambio los parametros de consulta (los cuales estan en una hoja). Me
sigue mostrando los adatos anteriores. existe alguna forma de borrar los datos
que quedan en memoria o algo asi por el estilo.
Gracias
Responder
todoexcel dice:
Buenas Tardes,
Responder
hola, tengo una macro la cual me busca datos en mi base de datos, pero se
detiene a cada rato si no encuentra un datos y necesito que la macro siga
corriendo sin que se detenga y los datos que no estan que simplemente se salte al
siguiente datoa a buscar
Responder
todoexcel dice:
Any dice:
Buenas tardes.
Tengo un excel .xlsm con una macro que borra registros, este archivo lo lleno
mediante un paquete de IS con información de una BD pero al momento de
querer ejecutar las macro que estan en VB me marca ‘recursos insificientes’,
como puedo resolver esto? El archivo tiene más de 60 mil registros
Responder
o
todoexcel dice:
Responder
todoexcel dice:
Ramón dice:
Responder
Ramón dice:
Tenéis en algún sito información sobre cómo evitar los bucles For Each Next, o
podéis explicarlo más detalladamente?
Gracias.
Un saludo.
Responder
todoexcel dice:
Hernán dice:
Responder
Melvin Zepeda dice:
Desde aquí comienza mi error, no hace lo que necesito, es esta parte que debería
encontrarme el complemento de lo que ya encontré…..
Responder
todoexcel dice:
josefina dice:
Responder
Comentarios nuevos →
Deja un comentario
Nombre *
Correo electrónico *
Web
Comentario
Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr
title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code>
<del datetime=""> <em> <i> <q cite=""> <strike> <strong>
BUSCADOR
NUESTROS PRODUCTOS
ENTRADAS DESTACADAS
Calendario 2013
CATEGORIAS
Aplicaciones
Atajos
Avisos
Calendarios
Códigos de barra
Complementos
Empresa
Errores
Finanzas
Funciones
Herramientas
Macros
Otras
Personajes
Plantillas
Productos
Servicios
Tablas dinámicas
Trucos
Uncategorized
Versiones
Videos
ETIQUETAS
2007 2010 2013 2014 analytics buscar buscarv calendario calendarios como competencia
mundial de Microsoft Office complemento contabilidad cuadro de mando datos de del en error
errores excel excel 2007 excel 2010 Funciones función fórmulas ganadora gratis hoja
limpiar los macro Macros menú mundial pdf Productos programación que sololetras
solonumeros tablas trucos vba y
OTROS
Computers