티스토리 뷰


이 글은 VBA 디버깅에 대해서 좀 알아 보려고 합니다. 사용자가 VBA를 통해서 어떠한 코드를 개발할 때, 작성된 VBA 코드가 원활하게 돌아가길 원할겁니다.

하지만 개발자나 사용자 모두 사람인지라 한번에 완벽한 코드를 만들 수는 없습니다. 


이러한 경우에 우리는 디버깅(Debugging)을 해야 합니다. 디버깅은 코드에 내포된 사용자가 실수한 코드를 수정하는 것을 의미합니다. 제대로된 디버깅은 사용자가 개발한 어플리케이션 혹은 VBA의 문제점을 해결해줍니다. 


VBA는 다양한 옵션을 통해서 VBA 코드를 디버깅하도록 도와줍니다. 이러한 옵션에 대해서 한번 알아보도록 하겠습니다. 


프로시저 실행하기 (단축키 F5) 


프로시저를 만든뒤 실행하기 위해서는 마우스 커서를 프로시저 안에 두고 F5를 누릅니다(혹은 Run 버튼을 누릅니다.) 

F5는 특정 프로시저나 매크로를 실행하게 도와줍니다. 하지만 F5는 자신이 작성한 프로시저나 매크로를 한번에 모두 실행을 해버립니다.

이러면 문제가 있을 경우 어디에서 문제가 발생하였는지 파악하기 어렵죠. 그래서 코드를 단계별로 시작하는 방법을 알아야 합니다. 

 

코드를 단계별로 시작하기 (단축키 F8)


단계별 시작 역시 프로시저 내부에 마우스 커서를 두고 F8을 누르면 됩니다. 단축키를 누르게 되면 실행한 프로시저 혹은 매크로의 가장 상단이 노란색으로 바뀌면서 실행이 되는 것을 볼 수 있습니다. 하지만 이 실행 방법은 코드를 한줄 한줄 실행하기 때문에 가장 첫 줄에서 멈춰있습니다. 다음 줄로 넘어가기 위해서는 F8을 한번더 누르면 됩니다. 코드를 전체 실행하기 위해서는 F5를 누르시면 되구요.





F8은 자신이 실행을 원하는 특정 라인을 라인별로 실행할 수 있다는 장점을 가지고 있습니다. 


하지만 F8을 이용하면 코드를 첫줄 부터 실행해야 합니다. 코드의 길이가 1000줄이라면 999번째 라인을 실행하기 위해서는 999번의 F8이 눌러지는게 필요합니다. 

이러한 문제를 해결하기 위해서 브레이크 포인트를 사용할 수 있습니다. 


브레이크 포인트 이용하기 (단축키 : F9)


특정 라인을 실행하기 위해서는 해당 라인에 브레이크포인트를 걸어야 합니다. 브레이크포인트를 거는 방법은 자신이 실행하고자는 라인에 가서 F9를 누릅니다. 

그리고 F5를 통해서 전체 실행을 하게 되면 자신의 원하는 코드가 실행되는 시점에 노란색으로 변경이 되면서 브레이크포인트가 걸리게 됩니다.


아래의 코드처럼 자신이 실행하고자는 코드에 마우스를 가져간뒤 F9를 누르면 짙은 빨간색으로 브레이크포인트가 걸립니다. 



그리고 F5를 통해서 실행을 하게 되면 자신이 원하는 부분이 실행되는 시점에 노란색으로 변경되면서 프로그램이 멈추게 됩니다.

아래의 코드는 MsgBox가 3개 뜨기 때문에, 브레이크포인트가 걸리기 위해서는 2번의 메시지창의 OK 버튼을 누르는 것이 필요합니다. 



브레이크 포인트를 걸고나서 F5, F8을 통해서 자신이 원하는 코드 근처의 코드를 라인별로 혹은 전체 실행할 수 있습니다. 이 3가지 방식을 섞어서 사용하는 것이 디버깅의 가장 일반적인 방법입니다. 


Immediate 윈도우 활용하기


Immediate 윈도우는 VBA 디버깅에 가장 효율적인 방법 중 하나입니다. 사용자가 디버깅을 하고자는 코드에 Debug.Print를 추가로 넣게 되면 Immediate 윈도우에 그결과를 바로 확인할 수 있습니다. 


아래의 그림처럼 활용할 수 있습니다. 



추가적으로 디버깅에 필수적인 단축키를 정리해보도록 하겠습니다. 


VBA 디버깅 단축키 정보


 단축키

기능 

 F4 

 프로퍼티 윈도우 보이기 

 F5

 활성화된 프로시저 실행하기  

 F8

 단계별로 디버깅 하기 

 Shift + F8 

 한번에 호출 프로시저 실행하기

 F9

 브레이크 포인트 토글(Toggle)하기 

 Ctrl + Shift + F9

 모든 브레이크 포인트 삭제하기 


이 글이 도움이 되셨으면, 아래의 하트를 눌러주세요. 


댓글