본문 바로가기
엑셀/엑셀 VBA

VBA Open 과 Application.Screenupdating = False 쓰면 버그,에러

by 한국수달보호협회장 2024. 5. 30.

 

 

VBA에서 코드짤때 Application.screenupdaing = False 이거는 워낙 자주쓰고

파일열때 쓰는 Open 메서드도 자주쓰는데

 

이거 두개를 같이, 잘못쓰면 문제가 생긴다.

 

회사에서 매크로만들다가 생긴문제라 코드를 보여주진 못하지만

============================

Application.screenupdaing = False

 

set 객체 =  객체.Open

(생략)

 

Application.screenupdaing = True

=============================

대충 이런 코드였고 for 순환문으로 계속 자료를 퍼나르는 형식임.

A파일 자료 → B파일로 복붙하는 매크로였는데 F8을 눌러서 한줄씩 작동시키면 문제가없는데

F5를 눌러서 한번에 실행시키면 A파일자료를 복사해서 A파일에다가 이상하게 붙여넣기 하는 문제가 발생함(?)

 

 

F5가 안돼서 디버깅하려고 F8을 누른건데 F8은 또 되니까 어이가 없어가지고 별에별짓을 다해봤는데

Application.screenupdating = False 이거를 지우니까 문제없이 작동함

 

이후에 순서를 바꿔서

 

===========================

set 객체 =  객체.Open

Application.screenupdaing = False

(생략)

 

Application.screenupdaing = True

=============================

 

이렇게 쓰니까 또 작동 잘됨. 구글에 한글로도 쳐보고 영어로 스택오버플로우도 찾아봤는데 이런 문제겪은 사람이 없어서 기록함