VBA 일시 중지 | 절전 및 대기 기능을 사용하여 VBA 코드 일시 중지

실행에서 VBA 코드 일시 중지

VBA Pause 는 지정된 시간 동안 코드 실행을 일시 중지하고 VBA 에서 코드를 일시 중지하는 데 사용되며 application.wait 메서드를 사용합니다.

어떤 작업을 수행 한 후 대규모 VBA 프로젝트를 빌드 할 때 다른 작업을 수행하기 위해 잠시 기다려야 할 수도 있습니다. 이러한 시나리오에서 작업을 수행하기 위해 매크로 코드를 일시 중지하는 방법은 무엇입니까? 두 가지 기능을 사용하여 지정된 시간 동안 VBA 코드를 일시 중지 할 수 있으며 이러한 기능은 "Wait"및 "Sleep"입니다.

대기 방법을 사용하여 코드를 일시 중지하는 방법은 무엇입니까?

"대기"는 VBA에서 특정 시간 동안 매크로를 실행하는 데 사용하는 기능입니다. 이 함수를 적용하여 코드가 기다려야하는 시간까지 언급해야합니다.

이 VBA 일시 중지 Excel 템플릿은 여기에서 다운로드 할 수 있습니다. – VBA 일시 중지 Excel 템플릿

예를 들어 13:00:00에 코드를 실행하는 경우 시간을 "13:15:00"로 제공하면 매크로가 15 분 동안 실행됩니다.

이제 VBA에서 WAIT 함수의 인수를 살펴보십시오.

시간 인수에서 코드가 일시 중지되거나 대기해야하는 시간을 언급해야합니다.

예를 들어, 아래 VBA 코드를보십시오.

암호:

 Sub Pause_Example1 () Range ( "A1"). Value = "Hello"Range ( "A2"). Value = "Welcome"Application.Wait ( "13:15:00") Range ( "A3"). Value = " VBA로 "End Sub 

이 코드를 실행하는 동안 시스템 시간은 13:00:00입니다. 코드를 실행하자마자 처음 두 줄이 실행됩니다.

Range ( "A1"). Value = "Hello"& Range ( "A2"). Value = "Welcome"

그러나 다음 줄을 보면 Application.Wait (“13:15:00”)이 표시되므로 해당 줄 작업을 실행 한 후 매크로가 15 분 동안 일시 중지됩니다. 즉, 13:00:00부터 시스템이 나올 때까지 기다립니다. 시간은 13:15:01에 도달합니다.

내 시스템 시간이 해당 시간에 도달하면 나머지 코드 줄이 실행됩니다.

Range ( "A3"). Value = "VBA로"

그러나 이것은 일시 중지 코드를 연습하는 가장 좋은 방법이 아닙니다. 다른 시간에 코드를 실행한다고 가정하면 TIME VALUE 함수와 함께 NOW VBA 함수를 사용해야합니다.

이제 함수는 작업중인 시스템에 따라 현재 날짜 및 시간을 반환합니다.

TIME Value 함수는 00:00:00부터 23:59:29까지의 시간을 유지합니다.

좋아, 코드를 실행할 때마다 10 분 동안 코드를 일시 중지해야한다고 가정하면 아래 코드를 사용할 수 있습니다.

암호:

 Sub Pause_Example1 () Range ( "A1"). Value = "Hello"Range ( "A2"). Value = "Welcome"Application.Wait (Now () + TimeValue ( "00:00:10")) Range ( " A3 "). Value ="VBA로 "End Sub 

이것은 이전 코드와 유사하지만 유일한 차이점은 NOW & TIME VALUE 함수를 추가 한 것입니다.

이 코드를 실행할 때마다 10 분 동안 실행을 보류하거나 일시 중지합니다.

절전 방법을 사용하여 VBA 코드를 일시 중지하는 방법은 무엇입니까?

수면은 내장 기능이 아니기 때문에 VBA의 복잡한 기능입니다. 사용할 수 있도록하기 위해 내장 된 것이 아니기 때문에 모듈 상단에 아래 코드를 추가해야합니다.

암호:

# If VBA7 Then Public Declare PtrSafe Sub Sleep Lib "kernel32"(ByVal dwMilliseconds As LongPtr) 'For 64 Bit Systems # Else Public Declare Sub Sleep Lib "kernel32"(ByVal dwMilliseconds As Long) # End If'For 32 Bit Systems 

위의 코드를 복사하여 모듈 상단에 붙여 넣기 만하면됩니다.

SLEEP은 Windows DLL 파일에있는 VBA 함수이기 때문에 위 코드를 추가해야하는 이유입니다. 따라서 하위 절차를 시작하기 전에 명명법을 선언해야합니다.

자, 이제 SLEEP 기능의 예를 살펴 보겠습니다.

암호:

 Sub Pause_Example2 () Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub 

먼저 두 개의 변수를 String으로 선언했습니다.

 Dim StartTime As String Dim EndTime As String 

그런 다음 TIME Excel 함수를 StartTime 변수에 할당했습니다. TIME 함수는 시스템별로 현재 시간을 반환합니다.

StartTime = 시간

그런 다음 메시지 상자에 표시 할 동일한 항목을 할당했습니다.

MsgBox StartTime

그런 다음 SLEEP 기능을 Sleep (10000)으로 적용했습니다.

여기서 10000은 VBA에서 10 초에 해당하는 밀리 초입니다.

그런 다음 마지막으로 변수 EndTime에 TIME 함수를 하나 더 할당했습니다 .

이제 다시 시간을 보여주는 코드를 작성했습니다.

EndTime = 시간

시작 시간과 종료 시간의 차이가 표시됩니다.

이제 코드를 실행하고 시작 시간을 확인합니다.

코드를 실행하면 시스템 시간은 13:40:48이고 이제 코드는 10 초 동안 휴면 상태가됩니다. 마지막으로 내 시간은 다음과 같다.

따라서 이와 같이 지정된 시간 동안 코드 실행을 일시 중지 할 수 있습니다.