메뉴

엑셀 VBA Timer 사용법 (매크로 속도 측정)

by 오빠두엑셀
읽는 시간 3분 최종 수정 2026.08.13

Timer 는 자정부터 지난 시간을 초 단위로 돌려주는 VBA 함수로, 명령문 앞뒤에서 두 번 읽어 빼면 매크로 실행 시간을 잴 수 있습니다.

매크로를 고쳐도 실제로 빨라졌는지는 눈으로 알기 어렵습니다. Timer 를 명령문 앞뒤에서 한 번씩 읽어 빼면 실행에 걸린 시간이 초 단위로 나와, 수정 전후를 숫자로 비교할 수 있습니다.

매크로 실행 시간 Timer로 측정 — Timer 함수로 매크로 실행 시간을 초 단위로 측정합니다.
참고 자료를 정리했어요
LINKS
본문에서 소개한 자료와 예제 파일을 한 곳에 모았습니다.

Timer 는 어떤 값을 돌려주나요

Timer 는 자정(00:00)부터 지금까지 지난 시간을 초 단위로 돌려주는 VBA 내장 함수입니다. 그 자체로는 시각일 뿐이라, 두 시점의 값을 빼야 비로소 '걸린 시간'이 됩니다.

반환값을 Double 형 변수로 받으면 소수점 아래까지 남아 1000분의 1초 단위로 비교할 수 있습니다. 정수형으로 받으면 소수가 잘려 짧은 매크로는 전부 0초로 나옵니다.

기본 사용법

측정하려는 명령문을 아래 뼈대의 가운데에 넣으면 됩니다.

Sub VBA_Timer_사용법()

    '// 변수 설정
    Dim dblStart As Double
    Dim dblElapsed As Double

    '// 매크로 실행 전 시작 시각을 기록합니다.
    dblStart = Timer

    '###########################
    '  동작할 명령문 입력
    '###########################

    '// 끝난 시점의 Timer 와 시작 시각의 차이를 계산합니다.
    dblElapsed = Timer - dblStart

    '// 걸린 시간을 메시지 상자로 표시합니다.
    MsgBox Format(dblElapsed, "0.0000초")

End Sub
주의 : Timer 는 자정을 지나면 0 으로 돌아갑니다. 자정을 넘겨 도는 매크로에서는 뺀 값이 음수가 되므로, 그런 경우에는 Now 나 Timer + 86400 보정이 필요합니다.

실전 예제 — 200×200 셀 채우기 속도 재기

시트의 A1셀부터 200행 200열까지 각 셀에 자기 주소를 적는 명령문입니다. 셀을 4만 번 건드리므로 속도 차이가 뚜렷하게 드러납니다.

Sub 매크로_속도측정_예제()

    '// 변수 설정
    Dim dblStart As Double
    Dim dblElapsed As Double
    Dim WS As Worksheet
    Dim i As Long, j As Long

    Set WS = ActiveSheet

    dblStart = Timer '// 시작 시각 기록

    '// 명령문을 실행합니다.
    WS.UsedRange.Clear
    For i = 1 To 200
        For j = 1 To 200
            WS.Cells(i, j) = WS.Cells(i, j).Address
        Next
    Next

    '// 끝난 시점과의 차이를 계산합니다.
    dblElapsed = Timer - dblStart

    '// 걸린 시간을 메시지 상자로 표시합니다.
    MsgBox Format(dblElapsed, "0.0000초")

End Sub
오빠두Tip : 같은 명령문을 Application.ScreenUpdating = False 를 켜고 다시 재 보세요. 화면 갱신을 끄는 것만으로 얼마나 줄어드는지 숫자로 확인할 수 있습니다.
관련 게시글
댓글 5
5 (3개 평가)
꽃가마
꽃가마 2021.01.31 07:54
안녕하세요. 덕분에 행복한 회원입니다.
timer 함수를 제 엑셀마크로에서 입력하면
newTime = timer
요렇게 함수가 작동이 안됩니다. (timer 소문자)
그래서 계산도 안됩니다.
무엇을 살펴봐야할까요?
(엑셀 2016 vba 7.1)

검색을 해보니 구글링으로 걸리는 원인들은...
변수명이 한글도 많읍니다.... 이거 꼭 영어로 고쳐야 하나요?
그 외에는 문제점이 전혀 안보이는데...
오빠두엑셀
오빠두엑셀 작성자 2021.02.04 16:05
안녕하세요.
newTime = timer
msgBox newTime
으로 timer가 제대로 동작하는지 확인해보시겠어요?^^
timer 동작과 변수 한글/영문 여부는 상관이 없어 보입니다.
raph00
raph00 2022.11.28 11:34
안녕하세요. 항상 많은 도움 받고 있습니다.
오타가 있는 듯 한데 확인 부탁 드립니다.

별도의 변수 설정을 안할시에는 Millisecond(100분의 1초) 단위로 계산하며,  ▶ (1000분의 1초)

MsgBox Format(dblElapsed, "0.0000초")
▶ dblElapsed/1000
오빠두엑셀
오빠두엑셀 작성자 2022.11.29 23:47
안녕하세요!^^
네 적어주신 내용이 맞습니다.
확인해주셔서 감사드리며 내용 바로 수정하였습니다.
감사합니다!
강민준🤗
강민준🤗 2024.08.10 15:55
좋은 강의 감사합니다.
스크랩 완료