본문 바로가기
WeekdayLife/excel vba tutorial

[엑셀VBA/초보자] 코드 실행과 디버깅 (4일차)

by JO_i 2024. 8. 7.

엑셀VBA코드 실행

코드를 작성했으니, 실행을 해야한다. 앞서 얘기한 것처럼 function프로시저는 함수처럼 입력하여 사용하는 것이므로, 따로 실행방법은 필요가 없을 것이기 때문에 sub프로시저에 한정해서 이야기 한다. sub프로시저는 VBE 창에서 실행하는 방법과 엑셀창에서 실행하는 방법이 있다.

 

VBE창에서 실행

VBE창에서 RUN(실행?) 메뉴를 보면, Run Sub/UserForm 이라는 항목이 있다. 마우스 커서를 원하는 sub프로시저 위에 두고, 단축키 F5를 눌러주면 해당하는 프로시저 전체가 실행된다.

 

메뉴를 누르기 보다는 F5키를 누르자
메뉴를 누르기 보다는 F5키를 누르자

 

 

VBA는 코드를 기재된 순서대로 순차적으로 읽어 내려오는 구조를 가진다. 그래서, 한줄씩 과정을 확인해가면서 실행할 수 있는데, F8키를 누를때마다 한줄씩 실행이 되고, 아래 그림처럼 실행되고 있는 코드행에 노란색 하이라이트가 쳐지게 된다. 이는 debug 메뉴에 Step Info 기능으로도 실행이 가능하다.

 

실행중인 코드에 노란색 하이라이트가 쳐진다
실행중인 코드에 노란색 하이라이트가 쳐진다

 

 

이 때, 코드 아래쪽 Locals 창을 보면, 변수에 대하여 할당된 내용과 오브젝트의 설정 내용들을 확인 할 수 있다. 앞선 예제에서 확인했던 키와 몸무게가 각각의 변수에 할당이 되어있음을 쉽게 확인할 수 있고, 변수 Type 또한 확인할 수 있다. 덕분에 어디에서 원하지 않는 값이 나오게 되었는지 직관적으로 확인이 가능하다.

 

생성된 변수의 속성을 확인할 수 있다. 불필요한 것까지도
생성된 변수의 속성을 확인할 수 있다. 불필요한 것까지도

 

 

 

이와 크게 관련은 없지만, 아래 내용은 알아두자.

 

주석(comment) 처리

코드창에서 주석(실행이 되지 않는 메모)을 다는 방법은 엔터키 옆에 있는 어퍼스트로피(')를 원하는 부분에 적어주면 이하 행은 주석처리가 된다. 여러 줄을 주석 처리 할때는 편의상 view > toolbar > edit를 활성화시켜, comment block 아이콘(손바닥 아이콘 우측)을 클릭해주면 된다.

 

주석처리는 언어마다 다르다
주석처리는 언어마다 다르다

 

 

Debug.Print

Debug.Print 명령어를 쳐주면, 하단 Immediate 창에 해당 코드의 log를 표시 해준다. 중간 연산과정을 확인할 때 확인이 용이하다.

 

debug.print 문 예시
debug.print 문 예시

 

 

들여쓰기 (indent)

python과는 다르게 vba는 indent에서 꽤나 자유롭지만, 코드의 가독성을 높이기 위해, tab으로 indent처리를 해주곤 한다.  shift + tab으로 tab으로 들여쓰기된 행을 다시 땡기는 것도 가능하다. IDE를 사용한다면 자동으로 indent도 가능하지만 VBE는 그런 기능은 없다.

 

 

끝.