miércoles, 21 de diciembre de 2016

Excel VBA Macro: Optimizar Macros en Excel II

-Con Menos código la macro se ejecutara más rápido siendo más fácil de entender y modificar. Sera más rápida de ejecutar y mejora la experiencia del usuario.

-Analiza la lógica antes de programar

-Usar la instrucción WITH para resumir el código además de que esto facilita cambios.

-Evitar la instrucción. SELECT casi nunca es necesario para operar en algún objeto.

-Evitar loops tal vez alguna función incorporada del Excel o el VBA ya hace lo que buscas...
no traten de reinventar la pólvora…sobre todo porque no se ejecutará más rápido que una
función nativa .

Usar Option Explicit al inicio de los módulos para obligar a declarar las variables.


Evitar el uso de Variant.

martes, 13 de diciembre de 2016

Excel Vba Macro: Optimizar Macros En Excel


Una primera medida puede ser desactivar la actualización de pantalla 
...en las primeras líneas

 Application.screenupdating=False
No debes olvidar colocarlo en True al finalizar el procedimiento
 Application.screenupdating=True

Apagar los eventos automáticos
Lo hacemos con la instrucción: 
Application.EnableEvents=False
Evita ejecutar macros de evento

Apagar visualización de saltos de página
Lo hacemos con la instrucción: ActiveSheet.DisplayPageBreaks = False
Esto  evita problemas entre macros Excel 2003 vs. 2007/2010



Sub Macro_Jes_Test

'Así debiera comenzar tu macro
Application.screenupdating=False

Application.calculation=xlCalculationManual
Application.EnableEvents=False

'Code ccc
Code ddd
'Code eee

'Así  debiera  finalizar

Application.screenupdating=True
Application.calculation=xlCalculationAutomatic
Application.EnableEvents=true

End Sub

martes, 6 de diciembre de 2016

Proteger y Desproteger Hojas VBA - Excel


'La siguiente macro permite proteger y desproteger todas las hojas de un libro

Const myClave = "MyClave123"

'for each
'Protect---> clave
'unprotect--->clave
'...

'excel vba macro:proteger todas las hojas
Sub protegerHojas()

Dim sht As Worksheet

For Each sht In Sheets

sht.Protect Password = myClave

Next

End Sub

'excel vba macro:Desproteger todas las hojas
Sub DesprotegerHojas()

Dim sht As Worksheet

For Each sht In Sheets

sht.Unprotect Password = myClave

Next

End Sub