엑셀 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
🎯 정리: Application.ScreenUpdating = False 핵심 포인트
✅ 코드 실행 속도를 향상시키고, 불필요한 화면 갱신을 막아 매크로 성능을 최적화할 수 있음.
✅ 화면 깜빡임을 방지하여 사용자 경험(UX)을 개선할 수 있음.
✅ 반드시 Application.ScreenUpdating = True로 복구해야 하며, On Error 문을 활용하여 예외 처리도 고려해야 함.
VBA에서 속도와 안정성을 높이고 싶다면? Application.ScreenUpdating = False를 적극 활용하세요! 🚀
'PROGRAMMING > EXCEL&ACCESS' 카테고리의 다른 글
[엑셀 VBA] 엑셀 VBA 기초 문법_문법 구조와 코드 다루기 (0) | 2025.02.15 |
---|---|
[엑셀 VBA] 매크로 이름과 바로가기 키 수정하기 (0) | 2025.02.14 |
[엑셀 VBA] 엑셀 VBA 기초 개념 알아보기 (0) | 2025.02.13 |
[엑셀] 빈 셀에 데이터 한 번에 입력하기 (0) | 2025.02.12 |
[컴활 실기 1급] 엑셀/엑세스/프로시저 같은 기능 다른 함수 및 명령어 정리 (0) | 2023.03.06 |
댓글