EXCEL - VBA

엑셀 VBA에서의 주석 처리

별동산 2023. 8. 3. 08:38
반응형

1. 주석의 기능

주석이란 프로그램에 대한 설명을 추가하는 기능과

프로그램을 디버깅하는 동안 코드를 실행에서 제외시키는 기능을 합니다.

 

 

2. 주석 처리 기호

모든 프로그래밍 언어는 주석 기능을 가지고 있는데,

언어별로 주석 처리 기호가 다르며, 한 줄 주석과 여러 줄 주석을 처리하는 방법이 다르기도 합니다.

 

자바를 예로 들면 한 줄 주석 처리는 //로 처리하고,

여러 줄 주석 처리는 /*로 시작해서 */로 끝납니다.

 

엑셀 VBA에서는 한 줄이나 여러 줄이나 주석 처리할 때 항상 작은따옴표(')를 사용합니다.

 

 

3. '주석 블록 설정' 구성 방법

주석 블록 설정을 편리하게 할 수 있도록

주석 블록 설정과 해제 아이콘이 들어 있는 편집 도구 모음을 표준 도구 모음 아래에 배치할 수도 있고,

컨텍스트(바로 가기) 메뉴에 주석 블록 설정과 해제 메뉴를 추가할 수도 있습니다.

 

가. 편집 도구 모음 추가

(1) 모듈 삽입

워크 시트를 하나 연 다음 개발 도구 - Visual Basic 명령을 눌러 Visual Basic 에디터를 실행합니다.

 

개발 도구 탭이 안 보일 때는 이 글을 참고 바랍니다.

 

그리고, 삽입 메뉴의 모듈을 클릭하거나, 빨간색으로 표시한 콤보 상자 버튼을 누른 후 모듈을 클릭해서 

 

 

엑셀 파일명 아래에 모듈을 추가합니다.

 

그러면 오른쪽에 빈 에디터 창이 열립니다. 혹시 안 열리면 Module1을 더블 클릭하면 됩니다.

 

Option Explicit라고 표시되는 것은 도구 - 옵션에서 '변수 선언 요구'에 체크했기 때문입니다.

기본값은 체크되어 있지 않은 상태입니다.

 

 

(2) 보기 - 편집도구 모음 추가

파일, 편집 등 메뉴 아래 엑셀 모양, 디스켓 모양, 망원경 모양 등 아이콘이 있는데 이것은 표준 도구모음으로 Visual Basic 에디터를 실행하면 기본적으로 배치되어 있습니다.

 

 

주석 블록 설정 등 아이콘은 편집 도구 모음에 있는데,

편집 도구 모음을 추가하려면 보기 - 도구 모음 - 편집을 단계적으로 누르면 됩니다.

 

그러면 표준 도구 모음 아래에 편집 도구 모음이 배치되는데,

 

손모양 오른쪽에 주석 블록 설정과 주석 블록 해제 아이콘이 있습니다.

 

편집 도구 모음 왼쪽을 보면 세로 세 점이 있으며, 이것을 눌러서 편집 도구 모음의 배치를 표준 도구 모음의 오른쪽, 왼쪽, 아래 또는 위로 이동 시킬 수 있습니다.

 

 

나. 컨텍스트 메뉴 추가

컨텍스트(바로 가기) 메뉴는 마우스 오른쪽 버튼을 누르면 나오는 메뉴로

 

도구 모음 표시줄의 빈 공간에서 마우스 오른쪽 버튼을 누르거나,

보기 - 도구 모음을 누르면

아래와 같이 맨 아래에 '사용자 지정' 메뉴가 있는데 누릅니다.

 

 

그러면 '사용자 지정' 창이 표시되는데, 도구 모음 탭 아래 바로 가기 메뉴에 체크하면

엑셀 VBA 도구 모음 사용자 지정 창

 

아래와 같이 '바로 가기 메뉴' 창이 표시됩니다.

바로 가기 메뉴에 체크하면 바로 가기 메뉴 창이 표시됨

 

 

이번에는 명령 탭을 클릭한 후 범주에서 편집을 선택하고, 오른쪽 명령에서 아무거나 클릭한 후 마우스 휠을 굴려 아래로 내려간 다음

엑셀 VBA 사용자 지정 창 명령 탭

 

'주석 블록 설정' 명령을 클릭한 다음

 

주석 블록 설정을 끌어서 바로 가기 메뉴의 코드 창에 갖다 놓으면 코드 창이 펼쳐지고, 다시 코드 창에 갖다 놓으면 바로 가기 메뉴가 펼쳐지는데, 원하는 위치, 아래에서는 '속성/메서드 목록' 위에 갖다 놓으면

바로 가기 메뉴에 주석 플록 설정 명령 추가

 

아래와 같이 컨텍스트 메뉴에 주석블록 설정 메뉴가 추가됩니다.

 

이런 식으로 주석 블록 해제 명령을 끌어서 주석 블록 설정 아래에 배치시킵니다.

 

그리고 설정을 마치기 위해 사용자 지정 창의 닫기 버튼을 누릅니다.

 

 

4. 한 줄 주석 처리

가 방법 1

아래와 같이 작은따옴표를 입력한 다음 내용을 입력하면 

 

작은따옴표 다음이 초록색으로 표시되면서 실행되지 않습니다.

 

한 단계씩 코드를 실행하는 단축 키인 F8키를 누르면

Sub 주석처리()를 실행한 후 주석 처리문은 건너뛰고, End Sub로 이동합니다.

 

 

나. 방법 2

아래와 같은 코드를 작성한 후

if문 다음의 Debug.Print 줄을 주석 처리하려면 그 줄 어디에나 커서를 놓고 

편집 도구 모음의 주석 블록 설정(Comment Block) 아이콘을 누르면

 

그 줄의 맨 앞에 작은따옴표가 추가되고 그 줄이 초록색으로 바뀝니다.

 

다. 방법 3

Else 다음의 Debug.Print 문 맨 뒤에 작은따옴표를 입력하고 문장을 입력하면 작은따옴표부터 주석처리됩니다.

 

주석 블록 설정 아이콘을 한 줄 전체를 주석처리하는 것이기 때문에 한 줄의 일부분 만을 위와 같이 주석처리할 수 없습니다.

다시 말해, 커서를 뒤 작은따옴표 앞에 두고 주석 블록 처리 아이콘을 눌러도 아래와 같이 한 줄 전체가 주석 처리 됩니다.

 

라. 방법 4

바로 가기 메뉴를 이용해 주석 블록 처리했던 Else문 다음의 실행문을 주석 블록 해제하려면

주석 처리를 해제하려고 하는 줄 아무 데나 커서를 놓고 마우스 오른쪽 버튼을 누른 후 주석 블록 해제 메뉴를 누르면 됩니다.

 

그러면 맨 앞의 작은따옴표가 지워지고, 초록색이 검은색으로 바뀌었는데, 뒷부분의 작은따옴표는 지워지지 않습니다.

다시 주석 블록을 설정하려면 마찬가지로 해당 줄에 커서를 놓고 마우스 오른쪽 버튼을 누른 후 주석 블록 설정 메뉴를 누르면 됩니다. 다시 Else 다음의 실행문이 초록색으로 바뀌었습니다.

 

5. 여러 줄 주석 처리

가. 방법 1

작은따옴표를 입력한 후 문장을 입력하는 것을

여러 번 반복하면 여러 줄이 주석 처리됩니다.

 

나. 방법 2

이때 엑셀 VBA에서 사용하는 예약어가 아니라면 문제가 없는데(예, "아래와 같이"),

"if문과 Else문을 나누어"라고 입력하고 엔터키를 누르면 if문인 줄 알고 아래와 같이 '필요한 요소인 then이 없으므로 문(장)의 끝이라'는 에러가 납니다. 그러나 확인 버튼을 누르면

 

빨간색으로 표시되지만, 계속 입력할 수는 있습니다. 

 

이제 아래와 같이 3줄을 선택한 후

 

주석 블록 처리 아이콘을 누르면

 

 

3줄을 한꺼번에 주석 처리 할 수 있습니다.

 

3줄씩 초록색으로 표시되지만, 작은따옴표의 위치가 방법 1과 방법 2가 다릅니다.

 

 

6. 주석 처리 해제

가. 방법 1

작은따옴표를 없애면 주석 처리된 것이 없어지고,

정상적인 실행 문이 됩니다.

if문 다음의 Debug.Print문이 초록색에서 검은색으로 변했습니다.

 

나. 방법 2

매번 작은따옴표를 지우는 것이 번거로우니

주석 처리를 해제할 범위를 선택한 후 한꺼번에 주석 처리를 해제하는 것이 좋습니다.

 

먼저 Else 줄에 커서를 놓고 주석 블록 처리 아이콘을 눌러 2줄을 주석처리한 다음

 

Else와 그다음 실행문을 선택한 다음 주석 블록 해제(Uncomment Block) 아이콘을 누르면

 

문장 맨 앞의 작은따옴표가 없어지고, 초록색이 검은색으로 변경됩니다.

 

그러나 뒷부분에 있는 《'Else문 처리》 부분은 주석 처리가 해제되지 않습니다. 

주석 블록 해제 기능은 해당 줄의 맨 앞 작은따옴표만 지우기 때문입니다.

 

다시 말해

① Else문 다음의 Debug.Print문이 있는 줄 아무 데나 커서를 놓거나,

② 《'Else문 처리》을 선택하고 주석 블록 해제 아이콘을 눌러도

뒷부분의 작은따옴표는 지워지지 않습니다.

 

7. 뒷부분 주석 처리

위에서는 설명을 하기 위해 《'Else문 처리》식으로 뒷부분을 주석 처리했는데,

if 조건문에서 여러 가지 조건이 있을 때 조건을 제외할 때 사용할 수도 있습니다.

 

예를 들어 A2셀의 값이 80 이상이고, 100점 이하면 B2셀에 합격이라고 입력하려면

아래와 같이 조건문을 작성하면 되는데

    If Range("a2") >= 80 And Range("a2") <= 100 Then
        Range("b2") = "합격"
    End If

 

100점 이하는 쓸데없는 조건이므로 제외시킨다고 하면

80 다음에 then을 넣고, And 앞에 작은따옴표를 넣어 조건이 적용되지 않도록 할 수 있습니다.

    If Range("a2") >= 80 Then 'And Range("a2") <= 100 Then
        Range("b2") = "합격"
    End If

 

그러나 자바 등 다른 언어처럼 부분적으로, 아래 예제에서는 "And Range("a2") <= 100" 부분만 주석 처할 수 없는 단점이 있습니다.

주석블록설정.xlsm
0.02MB

반응형