Patrones de codificación de VBA: mejora del rendimiento de VBA
En este artículo, veremos cómo mejorar el rendimiento de VBA.
En el artículo anterior, comparamos el método VBA Range Loop y confirmamos que el método que usa Variant Array es el más rápido.
Patrón de codificación VBA: bucle de rango - lectura
1. Variables globales de VBA relacionadas con el rendimiento
Aquí hay un resumen de todas las variables.
Examine el contenido de cada variable.
1.1. Aplicación.Actualización de pantalla
Es una variable que controla si la pantalla se actualiza o no, y el valor por defecto es True (la pantalla se actualiza).
- Mejora del rendimiento al configurar que no se actualice la pantalla (conversión de archivos, conversión de hojas, configuración de valores de celda, etc.) durante la ejecución del código VBA
- Eficaz cuando hay muchas actualizaciones de pantalla
- Establézcalo en False al ingresar el código y vuelva a configurarlo en True al final del código.
1.2. Aplicación.DisplayAlerts
Una variable que controla si se muestra o no la ventana de advertencia, y el valor predeterminado es Verdadero (se muestra la ventana de alerta).
- Evita que el código se detenga en el medio al no mostrar ventanas de advertencia (por ejemplo, la ventana "¿Desea guardar?" cuando intenta cerrar un archivo que ha cambiado) durante la ejecución del código VBA
- Establézcalo en False al ingresar el código y vuelva a configurarlo en True al final del código.
1.3. Aplicación Cálculo
Esta es una variable que controla el método de cálculo de la fórmula y el valor predeterminado es xlCalculationAutomatic (cálculo automático).
- Evite el cálculo automático de fórmulas (COUNTIF, VLOOKUP, etc.) durante la ejecución del código VBA
- Eficaz para muchas fórmulas.
- Establézcalo en xlCalculationManual al ingresar el código y vuelva a configurarlo en xlCalculationAutomatic al final del código
1.4. Aplicación EnableEvents
Es una variable que controla si se procesan los eventos y el valor predeterminado es True (se procesan los eventos).
- Evitar la ejecución de código que maneja eventos como Worksheet_Change cuando ocurren
- Esto es efectivo si tiene un código que maneja eventos.
- Establézcalo en False al ingresar el código y vuelva a configurarlo en True al final del código.
2. Código de ejemplo
2.1. ¿Cuándo conviene aplicar?
Si el código VBA contiene los siguientes casos, es apropiado aplicar el método de mejora del rendimiento descrito en este artículo.
- Al crear un nuevo archivo/hoja
- Al cambiar la hoja actual a otra hoja
- En caso de cambiar continuamente la celda actualmente seleccionada dentro de una hoja
- Al realizar cálculos complejos, como cálculos largos con muchas fórmulas
En este caso, se suspende temporalmente la ejecución del código VBA y se procesan los eventos que requieren Excel, como actualizar la pantalla o calcular fórmulas. El ejemplo más típico de código VBA lento es la actualización de pantalla. Puede mejorar el rendimiento suspendiendo temporalmente el procesamiento de otros eventos mientras se ejecuta el código VBA y procesando otros eventos después de que el código VBA termine de ejecutarse.
2.2. código de ejemplo
Antes de ingresar el código a procesar, la variable global se establece en un valor de mejora del rendimiento y, una vez que finaliza el procesamiento del código, se cambia al valor original. Consulte el siguiente código.
'코드 진입 부분 Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Application.EnableEvents = False Application.DisplayAlerts = False '실행할 코드가 들어 갈 부분 ... '코드 종료 부분 Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True Application.DisplayAlerts = True
Arriba, analizamos los patrones de codificación de VBA para mejorar el rendimiento. Si tiene alguna pregunta, por favor deje un comentario.