배움터  
  HOME > 배움터 > Daily Tip
Daily Tip

제품:   Excel 버전:   공통
검색어:   디버깅
제목:   편리한 디버깅을 위한 준비
     
 

  STEP> 따라하기

지난 뉴스레터에서는 디버깅을 위한 준비로서 이벤트핸들러를 다루어 보았습니다. 이번에는 VBE(Visual Basic Editor)의 몇 가지 기능을 소개하고자 합니다.

많은 프로시져를 다루다 보면 에러가 나거나 기능을 손봐주어야 할 것들이 생깁니다. 그러나 모듈이 많아지고 그 속에 기록한 프로시져가 많아질 수록 그에 반비례하여 사람의 기억력을 떨어지기 마련입니다. 그래서 이 모듈, 저 모듈을 돌아다니며 고치려는 프로시져를 찾아 다니곤 합니다.

프로시져를 찾는 방법으로는 프로시져 이름을 검색어로 삼아 찾기 기능을 활용하는 방법이 있고 에디터 상단에 있는 프로시져 콤보상자로 확인하는 방법이 있습니다.

사실 필자도 위의 방법을 이용하여 프로시져을 찾아 다니며 고치곤 했습니다. 그러나 VBE의 단축메뉴에는 이미 이러한 불편함을 해소하는 기능이 있습니다.

VBE에서 마우스 오른쪽 버튼을 클릭하면 단축메뉴가 보일 것입니다. 그중에서 정의라는 메뉴항목은 말 그대로 프로시져가 정의된 곳으로 이동하는 기능입니다. 프로시져이나 사용자 정의 폼 을 호출하는 코드에서 마우스 오른쪽 버튼을 클릭하고 정의를 클릭하면 해당 프로시져로 간단히 이동할 수 있습니다.

또 한 가지의 기능을 소개하자면 단축메뉴에서 이전 위치라는 항목이 있습니다. 이것은 책갈피를 사용하지 않고 간단히 이전에 편집하던 위치로 이동하는 기능입니다.

버깅을 할 때 F8를 눌러 한 행씩 실행해보는 일이 잦습니다. 그런데 종종 변수의 값을 관찰하거나 나중에 문제가 될 여지가 있는 행을 지나쳐 버리는 수가 생깁니다. 미리 변수의 값을 출력하도록 고치거나(Debug.Print 변수이름) 문제의 여지가 있을 행을 고치는 기회를 놓치는 셈이죠. 이럴 때 다시 처음부터 실행하게 됩니다. 다음 문 설정기능으로 이미 실행한 행으로 다시 실행위치를 바꿀 수 있습니다.

 

위의 그림에서는 r=0 이라는 행을 지나쳐 실행위치가 c=1이라는 행으로 옮겨져 있습니다(노란 색 하이라이팅과 화살표는 실행위치를 알려주는 역할을 합니다) 그런데 문제는 다음 행 Sheet1.Cells(r, c).Value = "에러가 없는 그날까지" 에서 일어납니다.

워크시트 셀의 행과 열의 시작은 1부터 시작하므로 r=0이라는 행은 문제를 일으킬 예정입니다. 이런 경우 r=0이라는 행으로 입력포인터를 이동하고 단축메뉴에서 [다음 문 설정]을 클릭하게 되면 실행위치가 r=0으로 옮겨지게 됩니다. 그리고 r=0 r=1로 바꾸면 문제가 없겠죠.

VBE의 편리한 기능을 익히셔서 즐거운 프로그래밍을 하시길 빕니다.

[참고]

위의 팁에서 [다음 문 설정]기능을 이용하여 실행위치를 바꾸고 r=0 r=1로 변경하였습니다. 변수의 값을 변경하는 경우 [직접 실행]창에서 r=1이라고 입력하고 [Enter]를 누르면 메모리속의 변수가 직접 고쳐지게 됩니다.

위의 그림에서 실행위치는 r=0을 지나 c=1이 있는 행으로 이동하였습니다. 이 경우 r 변수값을 고치려면 [직접 실행]창에서 바로 고칠 수 있습니다. 물론 이것은 임시적인 것이죠. 제대로 고치려면 코드를 고쳐야 겠지만 ...

1. ? r 을 입력하여 r변수값을 확인해보니 0 이었습니다(? 는 출력을 의미)
2. r=1을 입력하고 [Enter]키를 누르면 r변수값은 1로 변경됩니다.
3. 확인을 위해 다시 한번 ? r 을 입력하면 0에서 1로 변경된 걸 보실 수 있습니다.