Función DoEvents

Produce la ejecución de modo que el sistema operativo pueda procesar otros eventos.

Sintaxis

DoEvents( )

Comentarios

La función DoEvents devuelve un valor Integer que representa el número de formularios abiertos en versiones independientes de Visual Basic, como Visual Basic, Professional Edition. DoEvents devuelve cero en el resto de aplicaciones.

DoEvents transfiere el control al sistema operativo. El control se devuelve después de que el sistema operativo haya acabado de procesar los eventos en su cola y todas las claves de la cola SendKeys se hayan enviado.

DoEvents es útil principalmente para acciones sencillas como permitir a un usuario que cancele un proceso después de que se haya iniciado, por ejemplo, la búsqueda de un archivo. Para procesos de ejecución larga, la producción del procesador se logra mejor si se usa un temporizador o si se delega la tarea a un componente de archivo ejecutable EXE de ActiveX. En este último caso, la tarea puede continuar completamente independiente de la aplicación y el sistema operativo se encarga de la multitarea y la segmentación de tiempo.

Siempre que ejecute el procesador temporalmente dentro de un procedimiento de evento, asegúrese de que el procedimiento no se vuelva a ejecutar desde una parte distinta del código antes de que se devuelva la primera llamada; esto puede provocar resultados imprevisibles. Además, no use DoEvents si otras aplicaciones podrían interactuar con el procedimiento de maneras imprevesas durante el tiempo que ha producido el control.

Ejemplo:

En este ejemplo, se usa la función DoEvents para hacer que la ejecución se produzca en el sistema operativo una vez cada 1.000 iteraciones del bucle. DoEvents devuelve el número de formularios abiertos de Visual Basic pero solo cuando la aplicación host es Visual Basic.

' Create a variable to hold number of Visual Basic forms loaded 
' and visible.
Dim I, OpenForms
For I = 1 To 150000    ' Start loop.
    If I Mod 1000 = 0 Then     ' If loop has repeated 1000 times.
        OpenForms = DoEvents    ' Yield to operating system.
    End If
Next I    ' Increment loop counter.


Vea también

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.