VBA 실행 속도를 올리는 쉬운 방법 Application.ScreenUpdating = False

⌜ VBA 실행 속도를 올리는 쉬운 방법 Application.ScreenUpdating = False⌟

안녕하세요. 창원에 서식하고 있는 BIG MAN입니다.

오늘은 VBA 실행 시 결과물을 좀 더 빠르게 볼 수 있도록 실행 속도를 올릴 수 있는 간단한 방법에 대해 알아보겠습니다. 효과가 크기 때문에 알고 있으면 유용한 속성 중 하나입니다.

 

주의) 포스팅되는 모든 글은 게시자의 주관적인 관점이 포함되어 있으며, 절대적인 가이드가 아닙니다. 포스팅 글을 참조 후 발생되는 모든 책임은 본인에게 있음을 알려드립니다.

 

빠르게 결과를 보겠습니다. 아래는 이중 for 구문으로 Cells에 4만개에 숫자를 채워 넣는 간단한 기능을 실행해 보았습니다. Application.ScreenUpdating를 사용하지 않았을 경우 5.75초 였는데, Application.ScreenUpdating =False 속성을 사용한 후 2.03초로 약 2.8배의 속도 증가를 보였습니다.(단, 시스템의 사양과 운영체제의 환경 등에 따라서 결과 값은 달라질 수 있습니다.) 

 

주로 화면 전환이 많은 경우나 객체의 조작등 화면 갱신이 잦은 곳에 사용하게 되면 좋은 결과를 볼 수있습니다. 하지만 주의해야 할 경우도 있습니다. InputBox 함수를 사용하여 셀을 영역을 조작할 때 Application.ScreenUpdating = False 속성이 InputBox 함수보다 뒤에서 실행해야 한다. 만약 InputBox 함수보다 앞에서 실행된다면 셀을 선택할 수는 있지만, 선택된 영역을 엑셀 화면에서 확인할 수가 없습니다. 유사한 경우가 발생하게 되면 이 부분을 확인해 보시기 바랍니다.

 

주의 사항만 유념하신다면, 아래와 같이 코드가 시작하기 전에 Application.ScreenUpdating = False를 입력하고, End Sub 전에 Application.ScreenUpdating = True를 삽입하시면 됩니다. End Sub에서 프로시저가 끝나면 자동으로 Application.ScreenUpdating = True로 돌아가지만, 가능하면 정석대로 입력하는 것이 좋을 것 같습니다.

Application.ScreenUpdating을 사용하지 않은 결과
Application.ScreenUpdating = True를 사용한 결과

 

예시에서 사용한 엑셀 파일(xlsm)을 아래와 같이 첨부하도록 하겠습니다. 각자 컴퓨터에서 한번 테스트해 보기 바랍니다.

 

ScreenUpdatingTest.xlsm
0.02MB

 

👾코로나18👾 항상 조심하시고 건강하세요~ 감사합니다. 👋🏻😃

 

 

✅ 참고

2021.06.22 - VBA 배열의 최소 크기와 최대 크기를 알려주는 LBound와 UBound 함수

2021.06.21 - VBA 입력된 값이 숫자인지 확인하는 IsNumeric 함수

728x90