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
이제 두 개의 변수 StartTime 및 EndTime 이 매크로 시작 시간과 종료 시간을 보유합니다. 이 매크로를 실행하면 처음에는 매크로 시작 시간, 즉 시스템의 현재 시간이 표시됩니다.
확인을 클릭하면 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.