Optimizar macros y código VBA Excel

Compatibilidad: Excel 365 2021 2019 2016

VBA para Excel dispone del objeto de aplicación Excel que incluyen ciertas propiedades que optimizan las macros, dando una apariencia más profesional a nuestros contenidos al optimizar macros y código VBA Excel.

Optimizar macros y código VBA Excel
  • PROPIEDAD: Application.DisplayAlerts

Permite ocultar o mostrar la visualización de mensajes y avisos de Excel.

- Admite los valores True (muestra) / False (oculta).

- El valor por predeterminado es True.

  1. Con Excel abierto.

  2. Pulsar la tecla Alt y mantener pulsada / Pulsar la tecla F11. Mostrará el editor de Visual Basic.

  3. Ir a: Barra de Menú / Insertar / Módulo. Mostrará la ventana del módulo donde escribimos la macro.

  4. Escribir el código de la macro sin la propiedad:

    Sub Cierra_Libro1()

    Workbooks("Libro1.xlsx").Close

    End Sub

    Realizar cambios en la hoja / Ejecutar la macro. Mostrará mensaje de
    confirmación para guardar los cambios.

  5. Escribir el código de la macro con la propiedad:

    Sub Cierra_Libro2()

    Application.DisplayAlerts = False

    Workbooks("Libro1.xlsx").Close

    Application.DisplayAlerts = True

    End Sub

    Realizar cambios en la hoja / Ejecutar la macro. No mostrará mensaje de
    confirmación para guardar los cambios.

  • PROPIEDAD: Application.ScreenUpdating

Permite activar o desactivar la actualización de pantalla, movimientos de pantalla que se producen al seleccionar celdas, hojas y libros, etc.

- Admite los valores True (muestra la actualización) / False (oculta la actualización).

- El valor por predeterminado es True.

  1. Con Excel abierto.

  2. Pulsar la tecla Alt y mantener pulsada / Pulsar la tecla F11. Mostrará el editor de Visual Basic.

  3. Ir a: Barra de Menú / Insertar / Módulo. Mostrará la ventana del módulo donde escribimos la macro.

  4. Escribir el código de la macro sin la propiedad:

    Sub Parpadeo1()

    For i = 1 To 5

    Sheets.Add after:=Sheets(Sheets.Count)

    For j = 1 To 10

    Cells(i, 1) = i

    Next

    Next

    Sheets(1).Activate

    End Sub

    Ejecutar la macro. La macro mostrará como se cambia de hoja y va insertando
    el número en la fila de cada hoja.

  5. Escribir el código de la macro con la propiedad:

    Sub Parpadeo1()

    Application.ScreenUpdating = False

    For i = 1 To 5

    Sheets.Add after:=Sheets(Sheets.Count)

    For j = 1 To 10

    Cells(i, 1) = i

    Next

    Next

    Sheets(1).Activate

    End Sub

    Ejecutar la macro. La macro NO mostrará cómo se cambia de hoja y va insertando
    el número en la fila de cada hoja.

  • PROPIEDAD: Application.Visible

Determina si el objeto es visible o no, pudiéndose aplicar con userform (formularios)

- Admite los valores True (en el evento del formulario Terminate) / False (en el evento del formulario Initialize).

- El valor por predeterminado es True.

  1. Con Excel abierto.

  2. Pulsar la tecla Alt y mantener pulsada / Pulsar la tecla F11. Mostrará el editor de Visual Basic.

  3. Ir a: Barra de Menú / Insertar / Módulo. Mostrará la ventana del módulo donde escribimos la macro.

  4. Escribir el código de la macro:

    Sub OcultaExcel()

    Application.Visible = False

    Application.Wait Now + TimeValue("00:00:05")

    Application.Visible = True

    End Sub

    Ejecutar la macro. Verificar como la ventana de Excel se oculta durante 5 segundos.

  • PROPIEDAD: Application.calculation

Permite desactivar los cálculos automáticos, evitando que se recalcule todo cada vez que se pegan o modifican datos.

  1. Con Excel abierto.

  2. Pulsar la tecla Alt y mantener pulsada / Pulsar la tecla F11. Mostrará el editor de Visual Basic.

  3. Ir a: Barra de Menú / Insertar / Módulo. Mostrará la ventana del módulo donde escribimos la macro.

  4. Escribir el código de la macro:

Sub Calcula1()

Application.Calculation = xlCalculationManual

Worksheets("Hoja1").Calculate

Range("A1:C5").Calculate

Application.Calculation = xlCalculationAutomatic

End Sub

Ejecutar la macro. Desactiva los cálculos automáticos, recalcula la hoja 1 y el rango entre A1:C5
y vuelve a activar el cálculo automático.

  • PROPIEDAD: Application.EnableEvents

Permite eliminar o incluir los eventos de hoja y libro. No afecta a los controles en los formularios.

- Admite los valores True / False.

- El valor por predeterminado es True.

  1. Con Excel abierto.

  2. Pulsar la tecla Alt y mantener pulsada / Pulsar la tecla F11. Mostrará el editor de Visual Basic.

  3. Ir a: Barra de Menú / Insertar / Módulo. Mostrará la ventana del módulo donde escribimos la macro.

  4. Escribir el código de la macro:

    Sub Eventos()

    Application.EnableEvents = False

    ActiveWorkbook.Save

    Application.EnableEvents = True

    End Sub

    Ejecutar la macro. Deshabilita los eventos antes de guardar el libro, evitando
    ejecutar el evento BeforeSave.

Así al optimizar macros y código VBA, obtenemos una apariencia más profesional en nuestros libros Excel.

Nivel de dificultad: Experto VBA-Macros Excel Experto VBA - Macros

4 comentarios en “Optimizar macros y código VBA Excel

  • Estas sentencias en Excel 2016 no estan funcionando

    Application.ScreenUpdate= False
    Applicatin.EnableEvents = False

    Algún comentario al respecto, por favor

    • Hola Ricardo,

      Sin más pistas es dificil identificar el error. Indicas "Application.ScreenUpdate" y es "Application.ScreenUpdating"; y "Applicatin.EnableEvents" es "Application.EnableEvents"

      Recuerda que al final del código, repite la instrucción como "Application.ScreenUpdating=True"

      Saludos.

  • Buenas, pregunto si se agiliza aun mas mostrando solo los formularios en un archivo connmas de 100 hojas, es decir que es mas rapido sin mostrar las hojas y que solo esten visibles los formularios, gracias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.