메뉴

엑셀 VBA Application.ScreenUpdating 사용법 (매크로 속도 개선)

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

명령문 앞에서 ScreenUpdating 을 False 로 두면 실행 중 화면 갱신이 멈춰, 셀을 많이 건드리는 매크로일수록 속도가 크게 빨라집니다.

매크로가 느린 가장 흔한 이유는 계산이 아니라 셀을 건드릴 때마다 엑셀이 화면을 다시 그리기 때문입니다. 명령문 앞뒤에 한 줄씩만 넣어 화면 갱신을 잠시 멈추면, 코드를 고치지 않고도 속도가 크게 달라집니다.

화면 갱신 끄기 매크로 속도 개선 — 화면 갱신을 꺼서 매크로 실행 속도를 크게 높입니다.
참고 자료를 정리했어요
LINKS
본문에서 소개한 자료와 예제 파일을 한 곳에 모았습니다.

어떤 원리인가요

Application.ScreenUpdatingFalse 로 두면 매크로가 도는 동안 엑셀이 화면을 갱신하지 않습니다. 계산은 그대로 하되 그리는 일만 건너뛰는 것이라, 아래 경우에 효과가 특히 큽니다.

  • 여러 시트나 여러 셀을 오가며 값을 읽고 쓰는 매크로
  • 실행 도중 차트·표·피벗테이블이 다시 그려지는 매크로

기본 사용법

명령문을 아래 두 줄 사이에 넣기만 하면 됩니다.

'// 명령문 시작 전 화면 갱신 중단
Application.ScreenUpdating = False

'###########################
'// 동작할 실제 명령문...
'###########################

'// 명령문 종료 후 화면 갱신 재개
Application.ScreenUpdating = True
주의 : 반드시 True 로 되돌려야 합니다. 매크로가 중간에 오류로 멈추면 False 인 채로 남아 화면이 갱신되지 않고, 엑셀이 멈춘 것처럼 보입니다. 그럴 때는 직접 실행 창에 Application.ScreenUpdating = True 를 입력해 되돌리세요.

속도 비교해 보기

A1셀부터 100행 100열까지 각 셀에 자기 주소를 적는 매크로입니다. 셀을 1만 번 건드리므로 차이가 뚜렷합니다.

For i = 1 To 100
    For j = 1 To 100
        Sheet1.Cells(i, j) = Sheet1.Cells(i, j).Address
    Next
Next

같은 명령문을 화면 갱신을 끈 채와 켠 채로 각각 돌려 걸린 시간을 비교합니다.

Sub UpdateFalse()

    Dim StartTime As Double
    Dim SecondsElapsed As Double
    Dim i As Long, j As Long

    Application.ScreenUpdating = False   '// 화면 갱신 중단

    StartTime = Timer
    Sheet1.UsedRange.Clear

    For i = 1 To 100
        For j = 1 To 100
            Sheet1.Cells(i, j) = Sheet1.Cells(i, j).Address
        Next
    Next

    SecondsElapsed = Round(Timer - StartTime, 3)

    Application.ScreenUpdating = True    '// 화면 갱신 재개

    MsgBox "총 매크로 동작시간은 '" & SecondsElapsed & "' 초 입니다."

End Sub
Sub UpdateTrue()

    Dim StartTime As Double
    Dim SecondsElapsed As Double
    Dim i As Long, j As Long

    StartTime = Timer
    Sheet1.UsedRange.Clear

    For i = 1 To 100
        For j = 1 To 100
            Sheet1.Cells(i, j) = Sheet1.Cells(i, j).Address
        Next
    Next

    SecondsElapsed = Round(Timer - StartTime, 3)

    MsgBox "총 매크로 동작시간은 '" & SecondsElapsed & "' 초 입니다."

End Sub
오빠두Tip : 짧게 끝나는 매크로라면 일부러 True 로 두는 것도 방법입니다. 화면이 멈춘 채 커서만 도는 것보다, 진행되는 모습이 보이는 편이 쓰는 사람에게 덜 답답합니다.
주의 : 예제파일에는 매크로가 들어 있습니다. 파일을 연 뒤 [콘텐츠 사용] 버튼을 눌러 매크로를 활성화해야 실행됩니다. 버튼이 보이지 않거나 실행이 막힌다면 매크로 실행이 안될 때를 참고하세요.
관련 게시글
댓글 3
5 (3개 평가)
하월시아
하월시아 2021.11.09 00:42
감사합니다..
태호당당당당
태호당당당당 2024.08.02 14:44
감사합니다!!
강민준🤗
강민준🤗 2024.08.10 16:01
좋은 강의 감사합니다.
스크랩 완료