엑셀에서 VBA 프로그램 코드를 작성할 때 일정 시간 동안 실행을 지연 시키는 코드를 삽입해야 할 경우가 있습니다.
프로그램 실행을 일정 시간 동안 멈추었다가 다시 실행하도록 하는 경우가 흔히 있는 일은 아니지만 가끔 실행 단계에서 나오는 결과 값들을 확인해야 할 시간이 필요하거나, 앞에서 선언한 프로그램 구문, 특히 외부 참조가 처리되는데 시간이 소요되는 경우 그 시간만큼 VBA 프로그램을 잠시 멈추었다가 다시 진행해야 오류가 생기지 않습니다.
VBA에서 실행을 잠시 멈추는 지연 시간을 설정하는 방법으로 Sleep() 함수를 많이 사용하게 됩니다.
Sleep() 함수는 VBA에 기본 내장된 함수는 아니고, kernel32.dll을 참조 라이브러리로 추가해서 사용할 수 있는 함수입니다.
이번 글에서는 엑셀 VBA에서 일정 시간 동안 실행을 지연(Delay) 시키는 방법(Sleep)에 대해 알아보겠습니다.
엑셀 VBA에서 실행 중 지연 시간(딜레이) 구현 방
▼ 아래 VBA 프로그램 소스 코드는 Sleep() 함수를 사용하여 실행을 지연하는 예제 입니다.
- VBA 화면을 열기 위한 개발 도구 메뉴 추가는 엑셀에서 VBA(매크로)를 처음으로 시작할 때 참고하세요. 글을 참고하시면 됩니다.
- 64비트 시스템에서 kernell32.dll을 참조했을 때 컴파일 오류가 난다면 엑셀 VBA에서 Private Declare 코드 64비트 시스템에서 사용할 수 없는 컴파일 오류 해결 방법 글을 참고하시면 됩니다.
Private Declare PtrSafe Sub Sleep Lib “kernel32.dll” (ByVal dwMilliseconds As Long)
Sub Delay()
For i = 1 To 5 Step 1
Cells(i, 1).Value = i
Sleep (500)
Next i
End Sub
|
- 지연 시간을 주기 위한 Sleep() 함수를 사용하기 위해 Private Declare PtrSafe Sub Sleep Lib “kernel32.dll” (ByVal dwMilliseconds As Long)를 먼저 선언해 주었습니다.
- 사용하는 컴퓨터 시스템이 32비트인 경우 ‘PtrSafe’ 키워드는 생략하면 됩니다.
- 1초간 실행을 지연 시킬 경우 Sleep(1000)로 해주면 됩니다. 예제에서 Sleep(500)은 0.5초(sec)간 지연 됩니다.
결론
VBA를 이용하여 특정 알고리즘을 구현한다고 했을 때 각 실행 단계의 중간 결과를 확인하기 위해 실행을 잠시 멈추는 지연 시간이 필요합니다. Sleep() 함수를 사용하여 VBA에서 시간 지연(Delay)를 쉽게 구현할 수 있습니다.
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
이 글이 도움이 되었기를 바랍니다. ^-^