Professional Documents
Culture Documents
14formasdeaceleraryoptimizartusmacrosexcelTodoExcelTodoExcel
TodoExcel
SolucionesparahojasMicrosoftExcel
Inicio
Productos
ManualdeFunciones
ManualdeMacros
NuevasFunciones
OptipeGestindeDatosyTablas
ManualExcelavanzado
Calendariodesplegable
Recuperadordecontraseas
Servicios
ArmamostuFrmulaExcel
ProgramamostuMacroExcel
Foro
Clientes
Encuesta
Contacto
14formasdeaceleraryoptimizartusmacros
excel
Estainformacinesmuytilparaquienesmanejeneltemadeprogramacindemacrosexcel.Tus
macrosvanlentas?Problemasalahoradeejecutarlas?Culessonlastcnicasrecomendadas?
Cuandodeprogramacindemacrosexcelsetrata,eltemadelaeficienciaylavelocidadesclave.Hay
2leyesfundamentalesquehayquerecordar:
.
a.Cuantomenoscdigotieneunamacromejorporqu?
Ayudaaquelamacroseejecutemuchomsrpido
Simplificalatareaalahorademodificar/ampliar/repararlamacro
.
b.Cuantomsrpidoseejecutaunamacromejor!porqu?
Mejoralaexperienciadelusuario
NomantienelaPCocupadatantotiempo
Respectodeusarmenoscdigodependerdelashabilidadesdelprogramadorexcelencuestin.Hemos
vistoinfinidaddecasosdonde30o40lneasdecdigoVBAsepuedenresumiren5o6lneas(algo
similarpasaconlasfrmulasexcel).Siemprehaymacrosofrmulasquehacenlatareadeformams
directaysindartantasvueltas!
Otrarecomendacinclaveesinvertirmuchotiempoinicialenplanificaryanalizarlalgicadel
http://www.todoexcel.com/14formasdeaceleraryoptimizartusmacrosexcel/
1/9
9/1/2015
14formasdeaceleraryoptimizartusmacrosexcelTodoExcelTodoExcel
trabajo.Estonosvaaahorrarmuchosproblemasydoloresdecabezaposteriores!
Hayalgunasinstruccionespuntualesquesiempreconvieneusaryquevanaaceleraryoptimizar
nuestrasmacrosentodosloscasos.Vamosaverrepasaralgunastcnicaspuntualesquepodemosusar
alcomienzo,duranteyalfinaldenuestrasmacros.
.
ALCOMIENZODELASMACROS
1.Apagarelparpadeodepantalla
Lohacemosconlainstruccin:Application.screenupdating=False
Evitalosmovimientosdepantallaqueseproducenalseleccionarceldas,hojasylibros
2.Apagarlosclculosautomticos
Lohacemosconlainstruccin:Application.calculation=xlCalculationManual
Evitaqueserecalculetodocadavezquesepeganomodificandatos
3.Apagarloseventosautomticos
Lohacemosconlainstruccin:Application.EnableEvents=False
Evitaquesedisparenmacrosdeeventosilashubiere
4.Apagarvisualizacindesaltosdepgina
Lohacemosconlainstruccin:ActiveSheet.DisplayPageBreaks=False
SirveparaevitaralgunosproblemasdecompatibilidadentremacrosExcel2003vs.2007/2010
Enresumen,siempredebemoscomenzarlasmacrosas:
Application.screenupdating=False
Application.calculation=xlCalculationManual
Application.EnableEvents=False
ActiveSheet.DisplayPageBreaks=False
.
ALFINALDELASMACROS
5.Borrarcontenidodeportapapeles
Lohacemosconlainstruccin:Application.CutCopyMode=False
Permitelimpiarelportapapelesencasodehabercopiadodatos
Ademsdebemosvolverasuestadooriginallasinstruccionesconlasquecomenzamoslamacro.
Enresumen,siempredebemosfinalizarlasmacrosas:
Application.screenupdating=True
Application.calculation=xlCalculationAutomatic
Application.EnableEvents=True
ActiveSheet.DisplayPageBreaks=True
http://www.todoexcel.com/14formasdeaceleraryoptimizartusmacrosexcel/
2/9
9/1/2015
14formasdeaceleraryoptimizartusmacrosexcelTodoExcelTodoExcel
Application.CutCopyMode=False
.
OTRASTECNICASUTILES
6.UsarlainstruccinWITH
Seusaparaevitartenerquereferenciarunmismoobjetomuchasveces
Ejecucinleeenta
Sheets(1).Range(A1:Z1).Font.Italic=True
Sheets(1).Range(A1:Z1).Font.Interior.Color=vbRed
Sheets(1).Range(A1:Z1).MergeCells=True
Ejecucinrpida!
WithSheets(1).Range(A1:Z1)
.Font.Italic=True
.Font.Interior.Color=vbRed
.MergeCells=True
EndWith
7.EvitarlainstruccinSELECT
Segenerasobretodoenlasmacrosgrabadas
Lamayoradelasvecesnoesnecesarioseleccionarparacumplirelobjetivo
Ejecucinleeenta
Range(E1).Select
Selection.Copy
Range(D10).Select
ActiveSheet.Paste
Ejecucinrpida!
Range(E1).CopyRange(D10)
8.EvitarloopsFOREACH
Tenerqueirceldaporceldaconsumemuchotiempo
Sepuederesolverelproblemadeformamsdirecta!
Ejecucinleeenta
ForEachcellInRange(A1:A10000)
Ifcell=EmptyThencell=0
Nextcell
http://www.todoexcel.com/14formasdeaceleraryoptimizartusmacrosexcel/
3/9
9/1/2015
14formasdeaceleraryoptimizartusmacrosexcelTodoExcelTodoExcel
*Losloopssiempresonleeentos
*Enestecasorecorre10.000celdas!
Ejecucinrpida!
Existendiversasformasdeevitarlosloops.Lasolucindependerdelcasoconcretoencuestin.
Generalmenteseusanalgunasdeestastcnicas:agrupar,iraespecial,filtros,filtrosavanzados.Laidea
espoderrealizarlaaccinsobretodosloselementosalmismotiempo,enlugardetenerqueirunoauno!
9.UsarlasfuncionesnativasdeExcel
Noquierasreinventarlarueda.QuizsyaexistaunafuncinExcelquelohaga!
LasmacrossiempreejecutanmsrpidolasfuncionesnativasdeExcel
Ejecucinleeenta
mProducto=1
Fori=1to100
mProducto=mProducto*Cells(3,i)
Next
Ejecucinrpida!
mProducto=Application.WorkSheetFunction.Product(Range(C1:C100))
10.Forzarladeclaracindevariables
EneleditorVBA,menHerramientas>Opciones>pestaaEditor>marcarRequerirdeclaracinde
variables
Luegousarlavariablecorrecta:siesfechausarDate,siestextousarString,siesvalorusarLong
EvitarelusodelavariableVariantyaqueinsumemsrecursos
Usarnombresdevariablesquenosdiganalgo(porej.UltimaFilaoFilaZenlugardefouf)
11.Escribirlasmacrosenmdulosynoenhojas
Lashojaspuedenserborradasocopiadasyestogeneraraproblemasinesperados
12.Separarelprocesoenvariasmacros(divideyconquistars)
Situmacrohacemuchascosasconvienesepararlaenmuchasmacrospequeasyluegounirlas
Esmsfcilparacontrolar,auditar,etc
Ademstepermiteluegopoderrehusaralgunapartedelprocesoenotrasmacros
Macromuylaaarga
SubMegaMacro()
Codigolimpiadatos
Codigocargadatos
Cdigoarregladatos
Cdigoarmareporte
EndSub()
Mejordividirendiferentesmacrosparacadaproceso
SubLimpiaDatos()
http://www.todoexcel.com/14formasdeaceleraryoptimizartusmacrosexcel/
4/9
9/1/2015
14formasdeaceleraryoptimizartusmacrosexcelTodoExcelTodoExcel
Codigo
EndSubSub
CargaDatos()
Codigo
EndSub
SubArreglaDatos()
Codigo
EndSub
SubArmaReporte()
Codigo
EndSub
Finalmentepodemosunirtodoslosprocesos
SubProcesoCompleto()
CallLimpiaDatos
CallCargaDatos
CallArreglaDatos
CallArmaReporte
EndSub()
13.SercuidadosoconlainstruccinONERRORRESUMENEXT
Estainstruccinhacequelamacrosigaavanzandoaunqueencuentreunerror
Enalgunoscasosestoharqueseignorenerroresquenodeberanserignorados
Podrastenererrores(bugs)ynoenterarte!
14.Comentarbienlasmacros
Qupasarasituvierasquevolverarevisar/arreglar/ampliartucdigo8mesesdespus?
Aadircomentariosteayudaradescribiryrecordarlalgicayteahorrarmuchotiempo!
Compartetuspropiastcnicasparaaceleraryoptimizarmacros!
Djanostuscomentarios!
122respuestasa14formasdeaceleraryoptimizartusmacrosexcel
Comentariosnuevos
Johnydice:
Jueves,1deenerodel2015en23:54
Antesquenadagraciasporestetips.Porotrolado,estoyteniendoproblemaconunamacroque
extraeinformacindeWeb,dadoquesonvariasextraccionesquerealizo.Pensencolocaruna
ventanaemergenteybuenomeresultoperoestediosodadoqueenalgunasocasionesserequiere
hacermasde50consultasenlaejecucindelamacro.Estamacroextrae,ordena,formateay
http://www.todoexcel.com/14formasdeaceleraryoptimizartusmacrosexcel/
5/9
9/1/2015
14formasdeaceleraryoptimizartusmacrosexcelTodoExcelTodoExcel
continuaelprocesodeextraccin.Alahoradeconectarseconelservidorsequedaesperandoque
elservidorconteste.LoquemequedaescortarelExcelyreiniciartodoelproceso.Existealguna
formadehacerquelamacrocontinecuandosucedeesteproblemadeesperadelservidor???,es
decirquehagalaconsultaysidemoramasde30segundescontinueconlaconsultasiguiente.
Agradeceriabastantequemeapoyenenestoyaquemedemorademasiadoytengoquereiniciarel
Excelyprcederaejecutarlamacronuevamente.
Gracias
Responder
todoexceldice:
Viernes,2deenerodel2015en17:07
Consulteennuestroforo
luzmariadice:
Mircoles,17dediciembredel2014en00:23
Comentasquealcomenzarlamacrosedebecolocaresto,estolodebocolocarenelformularioen
Userform1_Activate()
Application.screenupdating=False
Application.calculation=xlCalculationManual
Application.EnableEvents=False
ActiveSheet.DisplayPageBreaks=False
Ytambienmencionasquealterminarlamacrocolocaresto,consultaestolocolocoenel
Userform1_Desactivate()
Application.screenupdating=True
Application.calculation=xlCalculationAutomatic
Application.EnableEvents=True
ActiveSheet.DisplayPageBreaks=True
Application.CutCopyMode=False
Agradecersurespuesta.
Responder
AdolfoBalderasdice:
Domingo,21dediciembredel2014en01:14
LuzMaria,enunUserFormnuncalosheusadoperosideberiadeserasi
yoloheusadoenmacrosdelasiguientemanera:
SubMiMacro()
Application.screenupdating=False
Application.calculation=xlCalculationManual
Application.EnableEvents=False
ActiveSheet.DisplayPageBreaks=False
Escribetucodigo
Application.screenupdating=True
Application.calculation=xlCalculationAutomatic
Application.EnableEvents=True
http://www.todoexcel.com/14formasdeaceleraryoptimizartusmacrosexcel/
6/9
9/1/2015
14formasdeaceleraryoptimizartusmacrosexcelTodoExcelTodoExcel
ActiveSheet.DisplayPageBreaks=True
Application.CutCopyMode=False
Endsub
Saludos!
Comentariosnuevos
Dejauncomentario
Tudireccindecorreoelectrniconoserpublicada.Loscamposnecesariosestnmarcados*
Nombre*
Correoelectrnico*
Web
Comentario
PuedesusarlassiguientesetiquetasyatributosHTML:<ahref=""title=""><abbrtitle="">
<acronymtitle=""><b><blockquotecite=""><cite><code><deldatetime=""><em><i><q
cite=""><strike><strong>
Publicarcomentario
BUSCADOR
BOLETINDENOVEDADES
Recibetodaslasnovedadesdenuestroblog!Regstrateaqu...
NUESTROSPRODUCTOS
ManualdeMacrosExcel
ManualdeFuncionesExcel
NuevasFuncionesExcel
OptipeDatosyTablasExcel
ManualExcelAvanzado
CalendarioExcelDesplegable
http://www.todoexcel.com/14formasdeaceleraryoptimizartusmacrosexcel/
7/9
9/1/2015
14formasdeaceleraryoptimizartusmacrosexcelTodoExcelTodoExcel
Recuperadordecontraseas
ENTRADASDESTACADAS
LafuncinExcelBUSCARV
Listadeatajosdelteclado
Calendario2014
FlujodeCaja(Cashflow)
PresupuestoIngresosyGastos
PuntodeEquilibrio
20erroresExcelusuales
14formasdeacelerarmacros
CATEGORIAS
Anuncios
Aplicaciones
Atajos
Avisos
Calendarios
Cdigosdebarra
Complementos
Empresa
Errores
Finanzas
Funciones
Herramientas
Macros
Otras
Personajes
Plantillas
Productos
Servicios
Tablasdinmicas
Trucos
Uncategorized
Versiones
Videos
ETIQUETAS
2007201020132014analyticsbackupbuscar buscarvcalendariocalendariosclavecomocomplementocontabilidadcontrasea
enerroresexcelexcel2007excel2010fifafixtureFuncionesfrmulasgratislimpiarlos
cuadrodemandodatosddtradade
macroMacrosmundial passwordProductosprogramacinqueservicepacksololetrassolonumerostablastrucosvbay
http://www.todoexcel.com/14formasdeaceleraryoptimizartusmacrosexcel/
8/9
9/1/2015
14formasdeaceleraryoptimizartusmacrosexcelTodoExcelTodoExcel
ManualdeFuncionesExcel|ManualdeMacrosExcel|NuevasFuncionesExcel|DatosyTablasExcel|
ManualExcelAvanzado
http://www.todoexcel.com/14formasdeaceleraryoptimizartusmacrosexcel/
9/9