Colección de citas famosas - Slogan de motivación - Excel vba es súper lento, ¿cómo acelerarlo?

Excel vba es súper lento, ¿cómo acelerarlo?

Objetos, incluidos todos los objetos utilizados en VBA. Cada una de sus llamadas consumirá n veces más recursos que la cantidad de llamadas. Veamos dos fragmentos de código. La tarea a completar es completar el número de serie en A1: A10000.

Código 1:

¿Sub? Operación 1()

t? =?Temporizador

¿Para qué? ¿incógnita? =?1?¿Adónde ir? 10000

¿Rango("a"? & amp?x)? =?x

¿Siguiente? x

¿Cuadro de mensajes? ¿Minutero? -?t

¿Fin? Subanálisis: en el código anterior, el objeto Rango se llama cíclicamente, * * * se llama 10,000 veces. Tiempo de operación: 0,98 segundos

Sub? Operación 2()

¿Atenuar? arr(1? ¿A dónde ir? 10000,? 1? ¿Adónde ir? 1)

t? =?Temporizador

¿Para qué? ¿incógnita? =?1?¿Adónde ir? 10000

arr(x,1)?=?x

¿Siguiente? x

¿Rango("a1:a10000")? =?llegar)

MsgBox? ¿Minutero? -?t

¿Fin? Análisis: en este código, primero se declara una matriz de 10,000 filas y 1 columna, y luego no se ingresa directamente al objeto Range en el bucle, sino que primero se almacena en la matriz arr. Finalmente, ingrese los números en la matriz arr en el área A1:A10000 de inmediato. El tiempo de ejecución final es de 0,062 segundos, diez veces más rápido que el Código 1.

Como se puede ver en los dos fragmentos de código anteriores, llamar a objetos en un bucle grande tiene un gran impacto en la velocidad. Al escribir código, intente evitar llamar a objetos VBA en bucles.