본문 바로가기
PROGRAMMING/EXCEL&ACCESS

[엑셀 VBA] 엑셀 VBA에서 화면 업데이트 끄기 (Application.ScreenUpdating = False)

by Hey Nary 2025. 2. 13.
728x90
반응형



엑셀 VBA를 실행할 때 화면이 깜빡이거나 실행 속도가 느려지는 경우가 있습니다.
이럴 때 Application.ScreenUpdating = False를 사용하면 코드 실행 속도를 향상시키고 불필요한 화면 깜빡임을 방지할 수 있습니다.
이번 글에서는 ScreenUpdating의 개념과 활용법을 알아보겠습니다.

 

반응형

1️⃣ Application.ScreenUpdating란?

Application.ScreenUpdating은 엑셀의 화면 갱신을 켜거나 끄는 속성입니다.

  • 기본값은 True로 설정되어 있으며, 이 상태에서는 매크로 실행 중에도 화면이 계속 업데이트됩니다.
  • 하지만 False로 설정하면 화면이 즉시 갱신되지 않아 속도가 빨라지고 화면 깜빡임이 방지됩니다.

📌 기본 문법

Application.ScreenUpdating = False ' 화면 갱신 끄기
' 실행할 VBA 코드
Application.ScreenUpdating = True ' 화면 갱신 다시 켜기​
 

👉 매크로 실행이 끝난 후에는 반드시 True로 되돌려야 합니다!


2️⃣ ScreenUpdating = False를 사용해야 하는 이유

✅ 1) 코드 실행 속도 향상 🚀

엑셀은 기본적으로 매크로가 실행될 때마다 화면을 갱신합니다.
하지만, 화면을 갱신할 필요가 없는 작업이라면 ScreenUpdating = False를 사용하여 불필요한 연산을 줄일 수 있습니다.

✅ 2) 화면 깜빡임 방지 🔄

VBA 코드에서 여러 개의 시트나 셀을 선택하고 이동하는 경우, 화면이 계속해서 변하면서 깜빡일 수 있습니다.
이를 방지하면 사용자가 매크로 실행 중에도 부드러운 사용자 경험(UX)을 유지할 수 있습니다.

✅ 3) 불필요한 리소스 낭비 방지 💾

화면을 업데이트하는 데도 시스템 리소스가 사용됩니다.
대량의 데이터를 처리할 때는 화면 갱신을 끄는 것이 CPU 사용량을 줄이는 데 도움이 됩니다.

 

그러나, 데이터가 실시간으로 처리되는 것을 보고 싶다면 사용하지 않아도 됩니다.


3️⃣ ScreenUpdating = False 적용 예제

📌 예제 1: 화면 깜빡임 없이 시트 이동

Sub ScreenUpdating_Test()
    Application.ScreenUpdating = False ' 화면 업데이트 끄기

    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.Select
        ws.Range("A1").Value = "테스트"
    Next ws

    Application.ScreenUpdating = True ' 화면 업데이트 다시 켜기
End Sub
 

👉 ScreenUpdating = False가 없으면 시트가 하나씩 이동하는 것이 보이며 깜빡임이 발생합니다.
👉 이를 방지하면 사용자는 아무 변화 없이 빠르게 실행된 결과만 볼 수 있습니다.


📌 예제 2: 대량 데이터 복사 시 속도 개선

Sub CopyLargeData()
    Dim ws1 As Worksheet, ws2 As Worksheet
    Set ws1 = Sheets("Sheet1")
    Set ws2 = Sheets("Sheet2")

    Application.ScreenUpdating = False ' 화면 업데이트 끄기

    ws1.Range("A1:Z10000").Copy
    ws2.Range("A1").PasteSpecial Paste:=xlPasteValues

    Application.CutCopyMode = False ' 복사 모드 해제
    Application.ScreenUpdating = True ' 화면 업데이트 다시 켜기
End Sub

👉 10,000개 이상의 셀을 복사하는 경우, 화면이 계속 갱신되면 실행 속도가 느려집니다.
👉 ScreenUpdating = False를 사용하면 매크로 실행 속도가 크게 향상됩니다!


4️⃣ ScreenUpdating = False 사용 시 주의할 점 ⚠️

❌ 1) 코드 끝에서 반드시 True로 돌려야 함

화면 갱신을 끈 상태에서 오류가 발생하면, 사용자가 엑셀 화면을 조작할 수 없는 문제가 발생할 수 있습니다.
따라서, On Error 문을 사용하여 오류가 발생하더라도 ScreenUpdating을 다시 True로 설정해야 합니다.

🔹 안전한 코드 작성 예제

Sub SafeScreenUpdating()
    On Error GoTo ErrorHandler ' 오류 발생 시 이동할 곳 지정
    Application.ScreenUpdating = False ' 화면 업데이트 끄기

    ' 실행할 코드
    Sheets("Sheet1").Range("A1").Value = "Hello"

ErrorHandler:
    Application.ScreenUpdating = True ' 오류 발생해도 화면 다시 켜기
End Sub

728x90

🎯 정리: Application.ScreenUpdating = False 핵심 포인트

코드 실행 속도를 향상시키고, 불필요한 화면 갱신을 막아 매크로 성능을 최적화할 수 있음.
화면 깜빡임을 방지하여 사용자 경험(UX)을 개선할 수 있음.
✅ 반드시 Application.ScreenUpdating = True로 복구해야 하며, On Error 문을 활용하여 예외 처리도 고려해야 함.

VBA에서 속도와 안정성을 높이고 싶다면? Application.ScreenUpdating = False를 적극 활용하세요! 🚀

 

728x90
반응형

댓글