참고
Microsoft Jet Expression Service가 샌드박스 모드에서 실행되는 경우 이 항목에 설명된 함수, 메서드, 개체 또는 속성을 사용할 수 없으므로 잠재적으로 안전하지 않은 식을 평가할 수 없습니다. 샌드박스 모드에 대한 자세한 내용은 도움말에서 "샌드박스 모드"를 검색하세요.
운영 체제가 다른 이벤트를 처리할 수 있도록 실행을 양보합니다.
구문
DoEvents( )
주의
DoEvents 함수는 Visual Basic, Professional Edition과 같은 독립 실행형 버전의 Microsoft Visual Basic에서 열려 있는 양식 수를 나타내는 정수를 반환합니다. DoEvents 는 다른 모든 애플리케이션에서 0을 반환합니다.
DoEvents 는 운영 체제에 제어를 전달합니다. 운영 체제가 큐에서 이벤트 처리를 완료하고 SendKeys 큐의 모든 키가 전송되면 제어가 반환됩니다.
DoEvents 는 사용자가 프로세스를 시작한 후 취소할 수 있도록 허용하는 경우(예: 파일 검색)에 가장 유용합니다. 장시간 실행 프로세스의 경우 타이머를 사용하거나 작업을 ActiveX EXE 구성 요소에 위임하면 프로세서에 양보하는 것이 더 좋습니다. 후자의 경우 작업은 응용 프로그램에 완전히 독립적으로 계속될 수 있으며 운영 체제는 멀티태스킹 및 시간 분할을 처리합니다.
이벤트 프로시저 내에서 프로세서에 일시적으로 양보할 때마다 첫 번째 호출이 반환되기 전에 코드의 다른 부분에서 프로시저가 다시 실행되지 않도록 합니다. 이로 인해 예기치 않은 결과가 발생할 수 있습니다. 또한 제어권을 양보하는 동안 다른 애플리케이션이 예기치 않은 방식으로 프로시저와 상호 작용할 수 있는 경우 DoEvents 를 사용하지 마세요.
예제
참고
VBA(Visual Basic for Applications) 모듈에서 이 함수를 사용하는 경우를 예로 들어 보겠습니다. VBA 사용에 대해 자세히 알아보려면 검색 옆의 드롭다운 목록에서 개발자 참고를 선택하고 검색 상자에 검색어를 하나 이상 입력하세요.
이 예제에서는 DoEvents 함수를 사용하여 루프가 1,000회 반복될 때마다 실행이 운영 체제에 양보되도록 합니다. DoEvents 는 열려 있는 Visual Basic 양식 수를 반환하지만 호스트 응용 프로그램이 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.