프로그램에서 디버깅은 필수 입니다. 디버깅을 어떻게 하느냐에 따라 프로그램의 생산성과 능력이 결정되기 때문입니다. VBA 에서도 마찬가지 입니다. 다른 GUI 툴과 마찬가지로 디버깅 기능을 지원하고 있습니다. 오늘은 VBA 에디터에서 코드를 작성한 후 제대로 작성했는지 테스트 하기 위한 디버깅 방법에 대해 알려 드리겠습니다.
▼ 함수를 실행하는 단축키는 F5 입니다. 그럼 단계별로 코드를 진행하는 디버그 단축키는 무엇일까요? 단축키 F8 을 클릭하면 그림처럼 함수명에 노란색 화살표가 표시 되면서 디버깅이 시작됩니다.
▼ 노란색 코드가 있는 곳이 소스 진행이 멈춘 곳입니다. 다음 소스 라인으로 진행하기 위해 F8 을 클릭합니다. 이렇게 한 단계씩 진행하면서 코드를 검증하는 것입니다. 디버그와 관련된 메뉴는 상단 “디버그” 에 있습니다. 총 4개의 디버그 메뉴를 이용해서 디버깅을 진행하게 됩니다. 디버그 메뉴 중에서 “한 단계씩 코드 실행”과 “프로시저 단위 실행”의 차이점은 함수 내에서 호출하고 있는 함수 안으로 들어갈 것이냐 입니다. “프로시저 단위 실행”은 함수의 결과값만 받고 스킵하는 명령입니다.
▼ 그런데 소스가 길 경우 처음부터 F8 을 눌러 단계별로 내려가는 것은 아주 비효율 적입니다. 검증 작업을 진행하면서 이상 없는 소스는 제외시켜야 하기 때문입니다. 이 때는 중단점 (Breakpoint) 를 이용합니다. F9 를 클릭하거나 사이드바를 클릭하시면 갈색 점이 생성됩니다.
▼ 함수 실행 단축키인 F5 를 누르면 지정한 중단점에서 멈추게 됩니다. 다시 F5 를 누르면 다음 중단점에서 멈추겠죠. 이렇게 중단점은 필요한 부분만 설정해서 소스를 검증할 수 있습니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 Excel 간단하게 자동 매크로 만들기 ▶ 엑셀 Excel 매크로 실행과 소스 편집하는 방법 ▶ 엑셀 Excel VBA 개발을 위한 개발 도구 탭 추가하기 ▶ 엑셀 VBA 매크로 실행 버튼으로 코드 실행하기 |
▼ 다음은 소스 진행 과정에서 각 변수에 값이 제대로 들어갔는지 검증하는 방법입니다. 변수에 들어 있는 값을 알아내기 위해서는 Breakpoint 나 F8 을 눌러 소스 진행을 멈추어야 합니다. 일시 중지된 상태에서 변수에 오른 마우스를 누르면 [조사식 추가] 메뉴가 나타납니다.
▼ [조사식 추가] 팝업창에서 식의 이름을 적고 확인 버튼을 누릅니다.
▼ 그럼 조사식 창에 변수가 저장됩니다. 조사식 목록에 추가된 변수는 단계별로 진행되는 디버깅 과정에서 실시간으로 어떤 값이 들어가는지 확인할 수 있습니다. 일일이 마우스를 가져가서 확인할 필요가 없는 것이죠.
▼ 변수의 값을 알아내는 또 다른 방법은 Debug.Print 함수를 사용해서 콘솔창에 값을 찍는 것입니다. 이 방법은 어느 정도 소스가 검증된 상태에서 최종 검수할 때 많이 사용합니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 Excel 간단하게 자동 매크로 만들기 ▶ 엑셀 Excel 매크로 실행과 소스 편집하는 방법 ▶ 엑셀 Excel VBA 개발을 위한 개발 도구 탭 추가하기 ▶ 엑셀 VBA 매크로 실행 버튼으로 코드 실행하기 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 날짜 차이를 계산하는 DateDiff 함수 사용하기 (0) | 2023.12.09 |
---|---|
엑셀 VBA 텍스트 내용을 읽어 와서 시트에 분리해서 넣는 방법 (3) | 2023.11.30 |
엑셀 VBA 함수 Time 사용해서 현재 시간 표시하기 (0) | 2023.11.28 |
엑셀 VBA 함수 Replace 문자열 내 문자 또는 문자열 대체하기 (0) | 2023.11.27 |
엑셀 VBA 시트 행, 열 선택할 때 Columns, Rows, EntireColumn, EntireRow 사용 (0) | 2023.11.26 |
엑셀 VBA 오름차순, 내림차순 데이터 정렬하기 (0) | 2023.11.24 |
엑셀 VBA 함수 StrComp 문자열 비교하기 (0) | 2023.11.24 |
엑셀 VBA 함수 Str 숫자를 문자열로 변환하기 (0) | 2023.11.24 |