매크로 코드를 일시 중지하는 Excel VBA 절전 기능

Excel VBA 절전 기능

VBA Sleep 기능은 Windows DLL 파일 아래에있는 Windows 기능으로, 특정 시간 동안 프로그램을 재개 할 수있는 특정 시간 동안 매크로 프로 시저 실행을 중지하거나 일시 중지하는 데 사용됩니다.

다른 작업 세트를 완료하기 위해 매크로 실행 프로세스를 일시 중지해야하는 상황이 있습니다. 다른 작업 세트는 코딩의 일부이거나 다른 매크로 프로 시저의 일부이거나 현재 Excel 매크로에 대한 입력일 수 있습니다. 프로그램이 실행 중일 때 어떻게 일시 중지 할 수 있습니까? 사용자가 지정한 시간 동안 프로 시저 코드를 일시 중지 할 수 있으며 그 이후에 프로그램을 재개 할 수 있습니다. VBA에서 SLEEP 기능을 사용하여이를 수행 할 수 있습니다.

VBA 절전 기능은 무엇을합니까?

SLEEP은 이름 자체가 "잠시 동안 잠자기", "잠시 동안 휴식", "시간 동안 일시 중지", 잠시 쉬는 시간 "등을 말합니다. 절전 기능을 사용하면 매크로 코드를 밀리 초 동안 일시 중지 할 수 있습니다. 이것을 사용하여 우리는 매크로 코드의 처리를 지연시킬 수 있습니다.

SLEEP이라는 내장 함수가 있다고 생각하면 VBA에는 그러한 함수가 없기 때문에 Windows 함수로 Sleep이라는 함수가 있기 때문에 잘못된 것입니다. 특수 코드 세트를 입력하면 실제로 VBA에서이 함수를 호출 할 수 있습니다. 실제로 Windows DLL 파일 내에 존재하는 함수이므로 vba에서 서브 루틴이 시작되기 전에 API의 명명법을 선언해야합니다.

아래는 VBA 코드입니다.

암호:

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

매크로 코드 작성을 시작하기 전에 위의 내용을 복사하여 모듈에 붙여 넣으십시오. 모듈에 이와 같이 붙여 넣어야합니다.

코드 작성 방법을 보여 드리기 전에 수면 기능에 대해 조금 더 말씀 드리겠습니다. 프로세스를 밀리 초 단위로 지연시킵니다. 따라서 1 초는 1000 밀리 초와 같으며 10 초 동안 일시 중지하려면 10000 밀리 초 여야합니다.

이 VBA 수면 Excel 템플릿을 여기에서 다운로드 할 수 있습니다 – VBA 수면 Excel 템플릿

예 1

Sub 프로 시저 시작 전에 API 코드를 붙여 넣으면 매크로 이름을 만듭니다.

암호:

# Sub Sleep_Example1 () End Sub 

두 개의 변수를 문자열로 선언하십시오.

암호:

 Dim StartTime As String Dim EndTime As String 

들어 상영의 변수 TIME 함수의 값을 할당합니다. 참고 : Excel 함수의 TIME은 현재 시간을 반환합니다.

암호:

StartTime = 시간

이제이 메시지를 메시지 상자 VBA에 표시합니다.

암호:

StartTime = 시간 MsgBox StartTime

이제 sleep 기능을 사용하여 코드를 10 초 동안 일시 중지합니다. 내가 말했듯이 코드는 밀리 초 단위로 일시 중지되므로 10 초 동안 일시 중지하려면 10000 밀리 초를 사용해야합니다.

암호:

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

이제 두 번째 변수 EndTime을 사용하고 현재 시간을 할당합니다.

암호:

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

이제 두 개의 변수 StartTimeEndTime 이 매크로 시작 시간과 종료 시간을 보유합니다. 이 매크로를 실행하면 처음에는 매크로 시작 시간, 즉 시스템의 현재 시간이 표시됩니다.

확인을 클릭하면 10 초 동안 절전 모드가됩니다. 버퍼 기호를 볼 수 있습니다.

10 초 후 코드를 재개하기 시작하므로 종료 시간이 표시됩니다. 즉, 10 초 동안 기다린 후 현재 시간이 무엇인지 표시합니다.

이제 매크로가 10:54:14에 시작되고 10:54:24에 종료되는 것을 볼 수 있습니다. 즉 정확히 10 초 차이가 있습니다. 이 10 초 동안 VBA는 코드 실행을 일시 중지합니다.

예제 # 2 – 루프의 수면 기능

Sleep is best used with loops in VBA. For example, I want to insert serial numbers from 1 to 10 using Do while loop in VBA.

After inserting the one number my code should wait for 3 seconds, so when the loop runs for 10 times it should be 30 seconds in total.

Code:

 Sub Sleep_Example2() Dim k As Integer k = 1 Do While k <= 10 Cells(k, 1).Value = k k = k + 1 Sleep (3000) '1000 milliseconds is 1 second so 3000 is equal to 3 seconds Loop End Sub 

Run this code and you have to wait for a minimum of 30 seconds to complete the process.

To track the exact time use the below code.

Code:

 Sub Sleep_Example2() Dim k As Integer Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox "Your Code Started at " & StartTime k = 1 Do While k <= 10 Cells(k, 1).Value = k k = k + 1 Sleep (3000) '1000 milliseonds is 1 second so 3000 is equal to 3 seconds Loop EndTime = Time MsgBox "Your Code Ended at " & EndTime End Sub 

This code will display you 2 message box, the first one will show the starting time and the second one will show the end time.

Note: While running this code, you cannot use excel, even the escape key will not work.