VBA – TIMER 를 활용하여 시간 지연 / 딜레이 (delay) 넣기

VBA 매크로를 실행할 때 특정 작업을 수행한 후 일정 시간 동안 동인 일시 정지 후 다음 작업을 수행하도록 넣고 싶을 때 사용할 수 있습니다.이렇게 시간 지연/딜레이를 넣을 때는 timer를 활용할 수 있습니다.TIMER는 자정부터 그 시점까지 경과한 시간을 초 단위로 나타냅니다.(ex-38035.235초 등)그래서 TIMER를 주로 매크로 작업을 수행하는데 얼마나 걸리는지 속도나 성능 체크에 많이 사용합니다.그리고 시간 지연을 넣을 때도 사용할 수 있습니다.아래는 A3열에 현재 TIMER 값을 입력하고 A4열에 5초 후 그때 TIMER 값을 입력하는 코드입니다.

Sub TEST() A = Timer ‘현재 TIMER 값을 A라는 변수에 할당하는 Range(“A3”).Value = “현재” & Timer Do While (Timer < A + 5) “5초가 경과할 때까지 LOOP Range (“A4”). Value = “5초 뒤” & Timer EndSub

Sub TEST() A = Timer ‘현재 TIMER 값을 A라는 변수에 할당하는 Range(“A3”).Value = “현재” & Timer Do While (Timer < A + 5) “5초가 경과할 때까지 LOOP Range (“A4”). Value = “5초 뒤” & Timer EndSub

상세설명은 다음과 같습니다.Sub TEST() ‘←서브의 시작 A=Timer Range(“A3”).Value = “현재” & Timer

A = timer 에서는 그 라인이 실행되는 시점에서의 timer 값을 A 라는 변수에 할당합니다.그리고 A3셀에 “현재 36491.51″과 같은 값을 입력합니다.

DoWhile(타이머<A+5) 루프

원래 Do while ABLOOP이라고 쓰자 A라는 조건을 충족하고 있는 동안 B을 반복 실행하다..라는 의미입니다.가령 i=0Do while i<5i=i+1LOOP인 경우 최초의 i=0이기 때문에, i<5를 만족하고 loop문 안으로 들어갑니다.그리고 i=i+1을 실행하고 i=1이 될지…여전히 i<5이므로 loop문 안에 갇혀서 loop문 처음으로 돌아갑니다.계속 i=i+1을 실행하고 i=6이 되면 i>5이니 loop문 밖으로 탈출하겠습니다.여기서 do while timer<A+5로 timer는 loop조건을 체크할 때 그 시점의 timer값이며, A는 위에서 설정한 최초의 timer값을 저장한 변수입니다.즉 loop조건 점검 시점의 timer값이 A에서 5초 경과하도록 다음에 가지 못한 loop문 안에 갇힌!!라는 뜻입니다.상기 i=i+1예와 달리 loop문 안에는 아무것도 없습니다. 그래서 여기에서는 5초가 지날 때까지 가마가 있습니다.

범위(‘A4’). 값=”5″&Timer””

상기 do while~loop에서 timer<A+5를 더 이상 충족하지 않게 되면(즉 5초가 지나면) loop 도어를 탈출하여 A4 셀에 값을 입력하는 코드를 실행합니다.이것을 실행하면, A4 셀에 “5초 후 36496.51″이라고 입력합니다.

상기 do while~loop에서 timer<A+5를 더 이상 충족하지 않게 되면(즉 5초가 지나면) loop 도어를 탈출하여 A4 셀에 값을 입력하는 코드를 실행합니다.이것을 실행하면, A4 셀에 “5초 후 36496.51″이라고 입력합니다.

실행 결과는 다음과 같습니다.

이렇게 입력하면

이렇게 돼요.

이렇게 코드를 입력하고 실행시키면 a3셀 입력 후 5초 후에 a4셀에 값이 입력되는 것을 확인할 수 있습니다.그럼 이만… 안녕하세요。이렇게 코드를 입력하고 실행시키면 a3셀 입력 후 5초 후에 a4셀에 값이 입력되는 것을 확인할 수 있습니다.그럼 이만… 안녕하세요。만약 5초가 아닌 0.2초를 지연시키고 싶다면 <5 대신 <0.2를 넣거나 특정 변수를 지정하도록 응용할 수 있습니다.~~

error: Content is protected !!