5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴

Application.ScreenUpdating 사용법 총정리 (매크로를 더욱 빠르게!)

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

매크로를 더욱 빠르게 동작하도록 도와주는 ScreenUpdating 속성의 사용방법을 알아봅니다.

Application.ScreenUpdating 사용법

엑셀 VBA :: Application.ScreenUpdating

예제파일

예제파일 사용안내

예제파일은 매크로가 포함되어 있습니다. 예제파일 실행 후 '컨텐츠 포함' 버튼을 클릭하여 매크로를 활성화합니다.

매크로를 활성화하는 방법은 '예제파일 매크로 활성화 방법' 포스트를 참고해주세요.

요약

엑셀 VBA의 Application.ScreenUpdating 속성에 대해 알아봅니다.

설명

엑셀 VBA의 Application.ScreenUpdating은 매크로 속도개선을 위해 취할 수 있는 가장 쉬운 방법 중 하나입니다.

매크로의 주 명령문이 시작되기전, Application.ScreenUpdating 의 값을 'False'로 설정한 뒤 매크로를 실행하면 매크로가 실행되는 동안 엑셀의 화면동작이 중단됩니다.

  • 여러 시트 또는 여러 셀을 참조하여 매크로가 동작하거나 또는
  • 명령문이 실행되는 동안 차트/표/피벗테이블이 업데이트되야 하는 경우

매크로 속도개선에 큰 기대를 할 수 있습니다.

실무에서 사용되는 간단한 매크로를 구현할 경우 [대게 사용자 요청으로 매크로가 동작하는 동안 마우스 커서가 빙글빙글 도는 모습만 보면 지루하니, 동작하는 화면을 보여달라는 요청으로 인하여] 매크로의 동작 속도가 크게 느리지 않을 경우 보통 True로 값을 주는것도 사용자 편의를 생각할경우 하나의 방법이 될 수 있습니다.

Application.ScreenUpdating 사용예제
ScreenUpdating 속성을 사용하면 매크로 동작속도를 개선할 수 있습니다.

VBA 코드

'// 명령문 시작 전 ScreenUpadating 중단
Application.ScreenUpdating = False

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

'// 명령문 종료 후 ScreenUpdating 재개
Application.ScreenUpdating = True

세부내용

1. 시트의 A1셀부터 CV100셀까지 셀주소를 입력하는 매크로 실행

시트의 R1C1[=A1셀] 부터 R100C100[=CV100셀] 까지 각 셀의 셀주소를 입력하는 매크로를 실행합니다.

For i = 1 To 100
    For j = 1 To 100
        Sheet1.Cells(i, j) = Sheet1.Cells(i, j).Address
    Next
Next
2. 아래 매크로의 ScreenUpdating 의 값을 False로 할때와 True로 할때의 동작속도를 비교합니다.
Sub UpdateFalse()

Dim StartTime As Double
Dim SecondsElapsed As Double
Dim i As Long: Dim 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: Dim 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
댓글 3
5 (3개 평가)
하월시아
하월시아 2021.11.09 00:42
감사합니다..
태호당당당당
태호당당당당 2024.08.02 14:44
감사합니다!!
강민준🤗
강민준🤗 2024.08.10 16:01
좋은 강의 감사합니다.
스크랩 완료