Nota: A função, método, objeto ou propriedade descrita neste tópico está desativada se o Serviço Microsoft Jet Expression estiver em execução no modo sandbox, o que impede a avaliação de expressões potencialmente inseguras. Para obter mais informações sobre o modo sandbox, procure "modo sandbox" na Ajuda.
Gera a execução para que o sistema operativo possa processar outros eventos.
Sintaxe
DoEvents ( )
Observações
A função DoEvents devolve um Número Inteiro que representa o número de formulários abertos em versões autónomas do Microsoft Visual Basic, como o Visual Basic, Professional Edition. O DoEvents devolve zero em todas as outras aplicações.
O DoEvents passa o controlo para o sistema operativo. O controlo é devolvido depois de o sistema operativo terminar de processar os eventos na fila e todas as chaves na fila SendKeys terem sido enviadas .
O DoEvents é mais útil para aspetos simples, como permitir que um utilizador cancele um processo depois de ter começado, por exemplo, uma pesquisa de um ficheiro. Para processos de execução prolongada, a cativação para o processador é melhor conseguida com um Temporizador ou delegando a tarefa a um componente EXE ActiveX. Neste último caso, a tarefa pode continuar completamente independente da sua aplicação e o sistema operativo trata da multitasking e da segmentação de tempo.
Sempre que ceder temporariamente ao processador num procedimento de evento, certifique-se de que o procedimento não é executado novamente a partir de uma parte diferente do código antes da primeira chamada ser devolvida; isto pode causar resultados imprevisíveis. Além disso, não utilize DoEvents se outras aplicações possam interagir com o seu procedimento de formas imprevistas durante o tempo em que deu controlo.
Exemplo
Nota: Os exemplos seguintes demonstram a utilização desta função no módulo VBA (Visual Basic for Applications). Para obter mais informações sobre como trabalhar com o VBA, selecione Referência para Programadores na lista pendente junto a Procurar e introduza um ou mais termos na caixa de pesquisa.
Este exemplo utiliza a função DoEvents para fazer com que a execução produza para o sistema operativo uma vez a cada 1000 iterações do ciclo. O DoEvents devolve o número de formulários do Visual Basic abertos, mas apenas quando a aplicação anfitriã é o 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.