Función Excel VBA DoEvents

Cuando escribimos códigos enormes, siempre caemos en la trampa de VBA. Cuando el código es grande, VBA se toma su propio tiempo para terminar el proceso de ejecución y ejecución. Lo cual puede tomar tiempo de un minuto a varios minutos. Este es el marco de tiempo cuando todos se irritan. Y no podemos hacer nada más en este período de tiempo. Pero para evitar esto, tenemos una función en VBA llamada DoEvents. Con la ayuda de DoEvents, podemos ejecutar el código en segundo plano y al mismo tiempo podemos hacer otros tipos de cosas también. No solo podemos trabajar en otra herramienta o software, sino que también podemos interrumpir el código o detenernos entre el proceso de ejecución.

Una vez que ingresemos DoEvents en el código, además de VBA, también tendremos el control del trabajo que queremos hacer. Lo bueno de DoEvents es que no tiene ningún tipo de sintaxis para escribir. Podemos colocar Doevents directamente donde queremos tomar el control de VBA y realizar las tareas según nuestras necesidades.

¿Cómo utilizar la función DoEvents en Excel VBA?

A continuación se muestran los diferentes ejemplos para usar la función DoEvents en Excel usando el código VBA.

Puede descargar esta plantilla Excel de VBA DoEvents aquí - Plantilla Excel de VBA DoEvents

Excel VBA DoEvents - Ejemplo # 1

Aunque para ejecutar DoEvents necesitamos un gran conjunto de datos donde podamos ver cómo se interrumpe el código. Entonces, usaremos un bucle, donde los números se aplicarán hasta que se complete el código. Para esto, siga los pasos a continuación:

Paso 1: abra un módulo en VBA desde la pestaña del menú Insertar como se muestra a continuación.

Paso 2: escriba el subprocedimiento de VBA DoEvents o podemos elegir cualquier nombre para definir el código según nuestras necesidades.

Código:

 Sub VBA_DoEvents () End Sub 

Paso 3: Ahora defina una variable en cualquier nombre con tipos de datos Long. El propósito de considerar el tipo de datos como Largo es porque tomaremos cualquier longitud de datos que queramos, lo que no es posible si consideramos Integer.

Código:

 Sub VBA_DoEvents () Dim A como Sub Long End 

Paso 4: Ahora abra un bucle For-Next donde pondremos las condiciones.

Código:

 Sub VBA_DoEvents () Dim A tanto tiempo para el siguiente A End Sub 

Paso 5: Considere el rango de un número de su elección que puede verse siendo implementado. Aquí estamos tomando el rango de 1 a 2000 en la variable definida A.

Código:

 Sub VBA_DoEvents () Dim A tanto tiempo como A = 1 a 20000 Siguiente A Fin Sub 

Paso 6: Una vez que definimos el rango de números, seleccionaremos el rango de celdas donde veremos los cambios en los números que elegimos arriba. Digamos que el rango de celdas es A1 a A5. Esto también podría ser una sola célula.

Código:

 Sub VBA_DoEvents () Dim A A Long For A = 1 To 20000 Range ("A1: A5"). Value = A Next A End Sub 

Paso 7: Ahora ejecuta el código haciendo clic en el botón Reproducir ubicado debajo de la barra de menú.

Ya veremos, el código se ha completado imprimiendo los números del 1 al 20000, pero no pudimos detenerlo.

Paso 8: para obtener el control total del código, aplique DoEvents después de las condiciones del bucle como se muestra a continuación.

Código:

 Sub VBA_DoEvents () Dim A tanto tiempo para A = 1 a 20000 Range ("A1: A5"). Valor = A DoEvents Siguiente A End Sub 

Paso 9: Ahora vuelve a ejecutar el código. Y en este momento intentamos detener el código haciendo clic en el botón detener, notaremos que el código se detendrá entre los procesos antes de completar la prueba de 20000.

Excel VBA DoEvents - Ejemplo # 2

Hay otro tipo de proceso para implementar DoEvents. Pero para esto también necesitaremos un código enorme como se ve en el ejemplo-1. Para esto, siga los pasos a continuación:

Paso 1: escriba el subprocedimiento de VBA DoEvents como se muestra a continuación.

Código:

 Sub VBA_DoEvents2 () End Sub 

Paso 2: Abra directamente un bucle For-next sin definir una variable.

Código:

 Sub VBA_DoEvents2 () para el siguiente sub final 

Paso 3: elija un rango de números que veremos en ejecución. Deje que el rango sea de 1 a 20000 igual que el ejemplo-1.

Código:

 Sub VBA_DoEvents2 () Para A = 1 a 20000 Siguiente Fin Sub 

Paso 4: Ahora ponga directamente cualquier trabajo para la salida, digamos que la salida es como se muestra a continuación. Y el rango de valores será +1 del valor real.

Código:

 Sub VBA_DoEvents2 () Para A = 1 a 20000 Salida = Salida + 1 Siguiente Fin Sub 

Paso 5: Ahora seleccione el rango donde queremos ver la salida. Deje que la celda sea A1.

Código:

 Sub VBA_DoEvents2 () Para A = 1 a 20000 Salida = Salida + 1 Rango ("A1"). Valor = Salida Siguiente Fin Sub 

Paso 6: Y finalmente colocaremos DoEvents al final de la condición del bucle For.

Código:

 Sub VBA_DoEvents2 () Para A = 1 a 20000 Salida = Salida + 1 Rango ("A1"). Valor = Salida DoEvents Siguiente Fin Sub 

Paso 7: Y luego ejecuta el código presionando la tecla F5. Ya veremos, podemos hacer cualquier cosa incluso cuando el código se esté ejecutando. Para demostración, he seleccionado las celdas B1 y C1. Los números llegaron a 4348 solamente, que es bastante menor que el límite establecido.

Paso 8: Si eliminamos los DoEvents y ejecutamos el código, no podremos hacer nada hasta que el código complete su proceso. Veamos eso también.

Código:

 Sub VBA_DoEvents2 () Para A = 1 a 20000 Salida = Salida + 1 Rango ("A1"). Valor = Salida Siguiente Fin Sub 

Paso 9: Ahora ejecuta el código nuevamente. Como podemos ver, mientras intentamos hacer clic en Detener, el código no se detuvo. Y la función Play todavía estaba activada.

Pros y contras de Excel VBA DoEvents

  • Podemos trabajar en cualquier herramienta o archivo en segundo plano mientras el código VBA se ejecutará en paralelo.
  • El uso de DoEvents no nos impide hacer el trabajo que queremos cuando se ejecuta el código.
  • Sobrescribe la hoja de trabajo o el libro de trabajo cuando cambiamos entre las diferentes hojas de trabajo o libro de trabajo.
  • El código se detiene cuando escribimos o cambiamos la celda por un momento y no se nos notifica.

Cosas para recordar

  • Si hacemos algo sin aplicar DoEvents, existe una gran posibilidad de que el código congele el sistema y el archivo. Y que reanudaremos los archivos una vez que el código se ejecute por completo o bloquee el archivo con múltiples clics.
  • Podemos ver el cambio en el proceso mientras trabajamos en el otro trabajo simultáneamente.
  • Una vez que completemos el código, guarde el archivo en formato excel habilitado para macros para evitar perder el código.
  • Intente aplicar el código en un conjunto de codificación enorme y grande, allí veremos la implementación y el uso reales.

Artículos recomendados

Esta es una guía de VBA DoEvents. Aquí discutimos cómo usar la función DoEvents en Excel usando el código VBA junto con ejemplos prácticos y una plantilla de Excel descargable. También puede consultar nuestros otros artículos sugeridos:

  1. ¿Cómo usar StrConv en Excel VBA?
  2. Convertir números a texto en Excel (ejemplos)
  3. Función VBA ByRef (ejemplos con plantilla de Excel)
  4. Excel SUMIFS con fechas | Plantilla de Excel

Categoría: