[VBA입문] 버그를 줄이고 Debugging(디버깅) 하는 방법


크리에이티브 커먼즈 라이선스
Creative Commons License

버그를 없애는 방법


1. 'Option Explicit'문을 사용
VB Editor 에서 '변수 선언 요구' 항목에 체크 표시를 해 두면 모듈 시트를 삽입할 때마다 맨 위에 'Option Explicit'이라는 문장이 자동 삽입됩니다.

모든 변수를 사용할 때 미리 선언(Dim)을 하고 사용해야 하므로 불편하다고 생각할 수 있지만 변수 이름과 관련된 입력 오류를 상당부분 줄일 수 있습니다.



자동 변수 선언하는 방법은

[도구] - [옵션] - [편집기] 에서 '변수 선언 요구'를 체크해주고 저장합니다.



모듈을 추가할 때마다 자동으로 아래와 같이 추가됩니다.




2. 주석(Comments)을 가급적 많이 사용
프로그래밍 세계에서는 '6개월만 지나면 자기 자신도 남'이라는 말이 있습니다.

코딩 시에는 조금 귀찮을 수 있지만 주석을 충실히 달아 놓으면 나중에 다시 살펴볼 일이 있을 때 큰 도움을 받을 수 있습니다.




3. 도움말과 전문가 사이트 활용
엑셀의 도움말은 문제가 발생하였을 때 가장 믿을만한 지원군 중 하나입니다.

뭔가를 하긴 해야겠는데 어떻게 해야할 지 생각나지 않는 경우,

전문가 사이트에서 검색어로 검색을 해서 원하는 참조하여 이용하고 주석처리를 잘 해두는 것도 방법입니다.

간단한 명령어가 생각나지 않는다면, 매크로 기록기를 통해 생성된 코드를 살펴보고 프로퍼티, 메서드를 도움말에서 찾아보는 것도 도움이 됩니다.



4. 들여쓰기(Indentation) 규칙을 적용
코딩 시 들여쓰기 규칙을 사용하면 가독성이 높아져서 전체적인 구조를 파악하기 쉬워집니다.

들여쓰기는 탭키를 이용하면 보기 좋게 정렬됩니다.



5. 엑셀의 디버깅 툴을 적극 사용
엑셀에는 여러 가지 종류의 디버깅 툴이 있습니다.

처음 사용할 때에는 귀찮고 복잡해 보일 수 있습니다만, 다소의 시간을 투자하여 이들 도구의 사용법을 잘 익혀 놓으면 실전에서 많은 도움이 됩니다.



직접 실행창 (Ctrl + G)를 누르면 하단에 직접 실행창이 보입니다.



이제 VBA Code 안에서 디버깅창(직접실행창)에 보일 내용을 Debug.Print 를 앞에 붙이고 실행을 합니다.


           
    FindText = InputBox("찾을 문자열 입력") '//찾을 문자열을 변수에 넣음
    If FindText = "" Then Exit Sub
   
    replace_Text = InputBox("[" & FindText & "] 을 바꿀 문자열을 입력하세요")
   
    Debug.Print "찾는문자열 : " & FindText
    Debug.Print "변경문자열 : " & replace_Text


이렇게 하면 디버깅창에 표시되지만 화면에서는 변경된 내역은 안보입니다.

Msgbox 를 이용하면 사용자가 일일이 '확인'이나 '취소'를 눌러줘야 하지만 Debug.Print 는 중단없이 다음 라인을 계속 실행합니다.

Debug.Print 변수이름  이렇게 하며 정상적으로 값을 뿌리는데

Debug.Print 배열  이렇게 하면 에러가 발생합니다. 이유를 알고 봤더니, ReDim Preserve 로 선언한 후에는 문제가 생기지 않았습니다.



직접 실행창에 뿌려지는 내용이 너무 많다면, Ctrl + A를 눌러서 전체 선택한 다음에 Delete 키로 지우면 전부 지워집니다.


코드를 한줄 한줄 실행하면서 제대로 로직이 맞게 된 것인지 확인하고 싶다면

F8키를 눌러서 한줄 한줄 실행을 합니다. 그러나, F8키만 누르는 경우에는 값이 어떻게 변경되는지 알기가 어렵습니다.

[보기] - [지역 창] 메뉴를 선택하면 '지역' 창이 표시됩니다. 이 상태에서 <F8> 키를 계속 눌러보면 각 변수에 값들이 어떻게 변하는지 알 수 있습니다.




위 그림을 보면 노란색 부분에 대한 식, 값, 형식이 하단 지역창에 보입니다.


전체가 아니라 중간점을 지정해두고 결과를 확인하고 싶다면



을 하고 F5키를 눌러서 실행하거나


를 눌러줍니다.

중단점 설정을 키보드로 하는 경우에는 F9 키를 누르면 됩니다.

중단점은 여러 곳에 설정할 수 있으며 설정을 해제하려면 중단점을 클릭하면 됩니다. 설정된 중단점들을 한꺼번에 모두 제거하려면 <Ctrl+Shift+F9> 키를 사용합니다.



코딩을 하다가 버그가 생겼을 때 빠르게 조치하기 위해서는 Debugging 하는 방법을 알아야 합니다.

그냥 단순한 방법으로 Msgbox 에 내용을 출력하도록 하여 결과를 볼 수도 있습니다만

디버깅 하는 방법을 배워두면 훨씬 편하고 좋습니다.


저작자 표시 비영리
신고

Link2Me

댓글을 달아 주세요

Powerd by Tistory, designed by criuce
rss