Macro를 작성하면서 시간을 1ms라도 줄이기 위해서
현재 작성한 매크로의 실행 시간을 측정하는 데 사용하기 위해서 사용
1. Class 모듈 이름을 "cTimer"로 삽입하고 아래 코드 추가
Option Explicit
#If Win64 Or VBA7 Then
Private Declare PtrSafe Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Currency) As Long
Private Declare PtrSafe Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As Currency) As Long
#Else
Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Currency) As Long
Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As Currency) As Long
#End If
Private t_StartTime As Currency
Private t_EndTime As Currency
Public Sub TimerStart()
QueryPerformanceCounter t_StartTime
End Sub
Public Sub TimerEnd()
QueryPerformanceCounter t_EndTime
End Sub
Public Function ElapsedTime()
Dim tEndTime As Currency
Dim TickFrequency As Currency
QueryPerformanceFrequency TickFrequency
If t_StartTime = 0 Then ElapsedTime = 0: Exit Function
If t_EndTime > 0 Then
ElapsedTime = 1000 * (t_EndTime - t_StartTime) / TickFrequency
Else
QueryPerformanceCounter tEndTime
ElapsedTime = 1000 * (tEndTime - t_StartTime) / TickFrequency
End If
ElapsedTime = IIf(ElapsedTime > 1000, Fix(ElapsedTime / 1000) & ".", "0.") & (ElapsedTime Mod 1000)
End Function
2. 사용하려는 곳에서 아래처럼 사용
Sub test_timer()
Dim nT As cTimer
Set nT = New cTimer
nT.TimerStart '// 타이머 시작
Sleep 1999
Debug.Print nT.ElapsedTime '// 중간 시간 점검
Sleep 555
nT.TimerEnd '// 타이머 종료
Debug.Print nT.ElapsedTime '// 종료 시간
End Sub
'Excel - VBA' 카테고리의 다른 글
범위내의 그림/사진의 숫자를 가져오기 (0) | 2023.02.18 |
---|---|
천문연구원 API를 이용한 음력 확인 (0) | 2023.01.19 |
VBA UDF 결과 배열을 Sheet에 출력하기 (0) | 2023.01.17 |
IsTime() 셀 값이 시간 값인지 어떻게 확인할 수 있을까? (0) | 2023.01.11 |
VBA로 Add-In(추가기능) 자동 업데이트 하기 (0) | 2023.01.06 |