EXCEL VBA

VBA Application.OnTime / VBA로 정해진 시간, 일정 시간마다 매크로 실행하기

카루루1007 2023. 3. 14. 23:09
728x90
반응형
SMALL

VBA의 Application.OnTime 함수를 사용하면

정해진 시간마다 또는

일정 주기마다

매크로를 실행하는 것이 가능합니다.

 

이전에 포스팅 했던 

VBA를 사용한 디지털 시계 만들기가 그 예시입니다.

 

VBA를 사용한 디지털 시계 만들기

다음 그림과 같이 간단한 VBA 코드로 실시간으로 시간을 표시하는 디지털 시계를 만들어 보겠습니다. 먼저 시간을 표시할 셀을 하나 선택하고 다음 그림과 같이 [ =now() ] 함수를 입력합니다. 그럼

karuru1007.tistory.com

 

Application.OnTime 함수는 네 가지 매개변수를 사용합니다.

Application.OnTime EarliestTime, Procedure, LatestTime, Schedule

(EarliestTime)
매크로가 실행될 가장 빠른 시간입니다.
TimeValue 함수를 사용하여 시간 값을 입력할 수 있습니다.

(Procedure)
실행될 매크로의 이름 또는 매크로가 들어 있는 모듈의 이름입니다.

(LatestTime)
매크로가 종료될 시간입니다.
EarliestTime과 마찬가지로 TimeValue 함수를 사용하여 시간 값을 입력할 수 있습니다.

(Schedule)
매크로가 주기적으로 실행되도록 할지 여부를 결정합니다.
True로 설정하면 매크로가 주기적으로 실행되고,
False로 설정하면 매크로가 한 번만 실행됩니다.
기본값은 True입니다.

 

예를 들어, 아래 코드는

현재 시간으로부터 1분 후에

"Macro_Name"이라는 이름의 매크로를 실행합니다.

Application.OnTime Now + TimeValue("00:01:00"), "Macro_Name"

 

또 다른 예를 들어보면 아래 코드는

12시 정각에 매크로가 실행되도록 예약하며,

한번만 실행이 됩니다.

Application.OnTime TimeValue("12:00:00"), "Macro_Name", , False

 

반응형
SMALL

Application.OnTime 함수에 대한 예시 코드입니다.

1. 매일 정해진 시간에 작동하는 코드

Sub ScheduleSaveWorksheet()
Application.OnTime TimeValue("17:00:00"), "SaveWorksheet"
End Sub

위 코드는 17시에 SaveWorksheet 함수를 호출합니다.

 

2. 일정시간마다 반복적으로 매크로 실행하기

Sub ScheduleCalculate()
Application.OnTime Now + TimeValue("00:01:00"), "Calculate"
End Sub

위 코드는 현재 시간부터 1분마다 Calculate 함수를 호출합니다.

 

3. 예약된 매크로 취소하기

앞서 예로 들었던(1번) 매크로를 취소 하려면 아래와 같이 코드를 작성하면 됩니다.

Sub ScheduleSaveWorksheet()

On Error Resume Next
Application.OnTime TimeValue("17:00:00"), "SaveWorksheet", , False
On Error GoTo 0

End Sub

 

728x90
반응형
LIST