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

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

작성자 :
오빠두엑셀
최종 수정일 : 2020. 05. 04. 23:02
URL 복사
메모 남기기 : (3)

엑셀 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
5 3 투표
게시글평점
3 댓글
Inline Feedbacks
모든 댓글 보기
3
0
여러분의 생각을 댓글로 남겨주세요.x