Excel vba es súper lento, ¿cómo acelerarlo?
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.