VBA – Wait 함수와 Sleep 함수

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Younjung Kim

Last updated on 5월 6, 2023

이 튜토리얼에서는 VBA의 Wait 및 Sleep함수를 사용하여 코드를 일시 중지/지연하는 방법을 보여드립니다.

복잡한 계산을 수행하거나 외부 프로그램을 호출하여 실행하는 VBA 프로그램을 만들 때 외부 프로세스가 진행되는 동안 VBA 코드가 특정 시간 동안 실행을 중지해야 할 수 있습니다. VBA에는 이를 위해 사용할 수 있는 몇 가지 방법이 있습니다.

Application.Wait 메서드 사용하기

다음 단계를 실행하기 전에 매크로 실행을 일정 시간 동안 또는 지정된 시간에 도달할 때까지 일시 중지해야 하는 경우 Application.Wait 메서드를 사용할 수 있습니다. 예를 들어 웹사이트 로그인 프로세스를 자동화했는데 페이지가 로드될 때까지 몇 초간 기다렸다가 매크로를 계속 실행해야 하는 경우에 유용할 수 있습니다.

1초 대기

매크로에 아래 코드를 포함하면 매크로 실행이 약 1초 동안 일시 중지됩니다:

Application.Wait (Now + TimeValue("0:00:01"))

특정 시간까지 대기

특정 시간까지 기다려야 하는 경우도 있습니다. 아래 코드를 사용하면 오전 9시 이전에는 매크로가 실행되지 않습니다:

Application.Wait "09:00:00"

Application.Wait는 1초 미만의 지연은 사용할 수 없다는 점에 유의하세요.

Sleep 메서드 사용하기

매크로를 보다 정교하게 일시 중지하려면 Sleep 메서드를 사용할 수 있습니다.

Sleep 함수는 Windows API 함수이며 VBA의 내장 함수가 아닙니다. 특수 선언문을 사용하여 액세스할 수 있습니다.

64비트 버전의 Microsoft Office를 사용하는 경우 다음 문을 새 모듈에 삽입하거나 Sleep 함수를 사용하려는 모듈의 시작 부분(서브루틴에 직접 삽입하지 않음)에 삽입할 수 있습니다:

Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)

32비트 버전에서는 아래 코드를 사용합니다:

Public Declare Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)

Sleep 함수를 선언한 후에는 다음과 같은 방식으로 이 함수에 액세스할 수 있습니다:

Sleep 10000

위의 코드를 사용하면 매크로가 10,000밀리초, 즉 10초 동안 일시 중지됩니다.

Do Events문을 반복문에 사용하기

Wait 및 Sleep 메서드 사용의 가장 큰 단점은 매크로가 계속 실행되기를 기다리는 동안 사용자가 Excel에서 아무 작업도 할 수 없다는 것입니다. 사용자는 Excel이 응답을 멈췄다고 생각할 수 있습니다. Ctl+Break를 사용하여 매크로를 중단할 수 있지만 이렇게 하면 일시 중지를 설정한 목적이 의미 없어집니다.

이 문제를 해결하기 위해 DoEvents라는 메서드가 포함된 루프를 사용할 수 있습니다.

Public Sub Test()
    Dim i As Long
    For i = 1 To 20000
        Range(“A1”).Value = i
        DoEvents
    Next i
End Sub

이제 Excel이 위의 매크로를 실행하는 동안 사용자는 탭을 변경하거나 셀 서식을 지정하는 등 Excel과 계속 상호 작용할 수 있습니다. 기본적으로 매크로는 계속 실행되지만 Excel 화면은 정지되지 않습니다. 비슷한 루프를 사용하여 Excel에 타이머 함수를 만들고 여기에 DoEvents 메서드를 통합하여 타이머가 실행되는 동안 화면 고정을 해제할 수 있습니다.

vba-free-addin

VBA 코드 예시 추가 기능

본 웹사이트에 있는 모든 코드 예시에 쉽게 접근해보세요.

메뉴로 이동하여 클릭만 하면 코드는 모듈에 바로 입력됩니다. .xlam 추가 기능.

(설치가 필요 없습니다!)

무료 다운로드

VBA 코드 예시로 돌아가기

AI in the VBA Editor!

AutoMacro is the ultimate VBA add-in.

AI, Generators, UI Builders, Code Library, and More!

Learn More

AutoMacro: AI in the VBA Editor!

Learn More