엑셀 VBA :: Application.ScreenUpdating
예제파일 |
예제파일 사용안내
예제파일은 매크로가 포함되어 있습니다. 예제파일 실행 후 '컨텐츠 포함' 버튼을 클릭하여 매크로를 활성화합니다.
매크로를 활성화하는 방법은 '예제파일 매크로 활성화 방법' 포스트를 참고해주세요.
요약
엑셀 VBA의 Application.ScreenUpdating 속성에 대해 알아봅니다.
설명
엑셀 VBA의 Application.ScreenUpdating은 매크로 속도개선을 위해 취할 수 있는 가장 쉬운 방법 중 하나입니다.
매크로의 주 명령문이 시작되기전, Application.ScreenUpdating 의 값을 'False'로 설정한 뒤 매크로를 실행하면 매크로가 실행되는 동안 엑셀의 화면동작이 중단됩니다.
- 여러 시트 또는 여러 셀을 참조하여 매크로가 동작하거나 또는
- 명령문이 실행되는 동안 차트/표/피벗테이블이 업데이트되야 하는 경우
매크로 속도개선에 큰 기대를 할 수 있습니다.
실무에서 사용되는 간단한 매크로를 구현할 경우 [대게 사용자 요청으로 매크로가 동작하는 동안 마우스 커서가 빙글빙글 도는 모습만 보면 지루하니, 동작하는 화면을 보여달라는 요청으로 인하여] 매크로의 동작 속도가 크게 느리지 않을 경우 보통 True로 값을 주는것도 사용자 편의를 생각할경우 하나의 방법이 될 수 있습니다.

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