Nota
La función, el método, el objeto o la propiedad descritos en este tema se deshabilitan si el servicio de expresiones de Microsoft Jet se ejecuta en modo de espacio aislado, lo que impide la evaluación de expresiones potencialmente inseguras. Para obtener más información sobre el modo de espacio aislado, busque "modo de espacio aislado" en la Ayuda.
Produce la ejecución para que el sistema operativo pueda procesar otros eventos.
Sintaxis
DoEvents( )
Observaciones
La función DoEvents devuelve un entero que representa el número de formularios abiertos en versiones independientes de Microsoft Visual Basic, como Visual Basic, Professional Edition. DoEvents devuelve cero en todas las demás aplicaciones.
DoEvents pasa el control al sistema operativo. El control se devuelve después de que el sistema operativo haya terminado de procesar los eventos en su cola y se hayan enviado todas las claves de la cola SendKeys .
DoEvents es más útil para cosas simples como permitir que un usuario cancele un proceso después de que se haya iniciado, por ejemplo, una búsqueda de un archivo. En el caso de procesos de larga ejecución, la mejor manera de ceder al procesador es mediante un temporizador o delegando la tarea a un componente ActiveX EXE. En este último caso, la tarea puede continuar de manera completamente independiente de su aplicación, y el sistema operativo se encarga de la multitarea y la segmentación del tiempo.
Cada vez que ceda temporalmente al procesador dentro de un procedimiento de evento, asegúrese de que el procedimiento no se ejecute nuevamente desde una parte diferente de su código antes de que regrese la primera llamada; Esto podría causar resultados impredecibles. Además, no use DoEvents si otras aplicaciones podrían interactuar con el procedimiento de forma imprevista durante el tiempo que haya cedido el control.
Ejemplo
Nota
Los ejemplos siguientes muestran el uso de esta función en un módulo de Visual Basic para Aplicaciones (VBA). Para obtener más información sobre cómo trabajar con VBA, seleccione referencia para desarrolladores en la lista desplegable situada junto a búsqueda y escriba uno o varios términos en el cuadro de búsqueda.
En este ejemplo se usa la función DoEvents para hacer que la ejecución ceda al sistema operativo una vez cada 1000 iteraciones del bucle. DoEvents devuelve el número de formularios de Visual Basic abiertos, 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.