프로시저 빌더

프로시저 빌더(ALT P)는 특정 설정(화면 업데이트 등)이 있는 프로시저를 빠르게 생성합니다. 기본 프로시저 설정을 저장하여 새 프로시저를 작성할 때 시간을 절약할 수 있습니다.

출력:

procedure builder output
사용 사례
  • 원하는 설정으로 하위 절차 또는 기능을 빠르게 만들 수 있습니다.
  • 나중에 사용할 수 있도록 설정을 저장하세요.

설정을 기본값으로 저장

현재 설정을 기본값으로 저장하려면(나중에 쉽게 액세스할 수 있도록) 빌더 오른쪽 하단을 클릭합니다:

procedure builder save settings

설정 설명

프로시저 빌더에서 사용할 수 있는 설정에 대한 설명은 아래를 참조하세요.

함수 및 하위

코딩(VBA 또는 다른 언어)을 할 때 일반적으로 코드는 프로시저에 저장됩니다. 프로시저는 호출(실행)할 수 있는 코드 블록입니다. Excel에서 매크로를 기록하는 개념에 익숙하실 것입니다. 매크로를 기록하면 실제로는 VBA 프로시저를 만드는 것인데, VBA에는 두 가지 유형의 프로시저가 있습니다: 서브루틴(Sub)과 함수입니다. 서브와 함수에는 세 가지 주요 차이점이 있습니다:

  1. 함수는 값을 반환합니다
  2. 함수는 Excel 수식에서 사용할 수 있습니다
  3. 함수는 다른 프로시저(또는 Excel 수식)를 통해서만 호출할 수 있습니다. 명령 버튼에 함수를 할당하거나 매크로 목록을 통해 함수에 액세스할 수 없습니다.

완성된 함수와 하위 함수는 다음과 같습니다:

example procedures

함수는 값을 반환하므로 예상되는 값의 유형을 VBA에 알려주어야 합니다. 위에서 함수를 부울 값 (TRUE 또는 FALSE)으로 선언한 것을 볼 수 있습니다:

함수 Ex_Function() As Boolean

대신 모든 값 유형을 허용하는 Variant 유형으로 함수를 선언할 수 있습니다:

함수 Ex_Function() As Variant

프로시저 빌더는 모든 함수를 Variant 유형으로 설정합니다.

여기에서 하위와 함수 사이를 전환합니다:

procedure builder sub function

이름 및 설명

프로시저의 이름을 설명적으로 짓고 주석을 추가하여 프로시저가 하는 일을 설명하는 것이 중요합니다. 지금 작성하는 코드는 본인에게는 이해가 되지만 다른 사람(미래의 본인 포함)에게는 이해가 되지 않을 수 있습니다. 만드는 모든 프로시저에 주석을 추가하는 것이 가장 좋습니다.

여기에서 이름과 주석을 추가하세요:

procedure builder name description

비공개 대 공개(고급)

기본적으로 프로시저는 매크로 목록(하위에만 해당)에서 액세스할 수 있으며 다른 프로시저에서 호출할 수 있습니다. 비공개 선언은 매크로 목록에서 프로시저를 숨기고 현재 코드 모듈에서만 액세스할 수 있도록 프로시저를 설정합니다(참고: 기술적으로는 Application.Run을 사용하여 이 문제를 해결할 수 있습니다).

비공개 선언을 하려면 프로시저 이름 앞에 Private을 추가합니다:

Private Sub Ex_Sub

전체 모듈을 “비공개”로 선언할 수도 있습니다. 코드 모듈 상단에 비공개 모듈을 추가하면 됩니다:

비공개 모듈

전체 모듈을 비공개로 표시하면 매크로 목록에서 모든 프로시저가 숨겨지지만 다른 모듈에서 쉽게 참조할 수 있습니다.

여기에서 공개 또는 비공개로 정의합니다:

vba code module

설정

모든 애플리케이션(Excel, PowerPoint, Outlook 등)에는 애플리케이션 수준 설정이 있습니다. 이러한 설정 중 일부는 VBA 코딩에 매우 중요합니다. 중요: 애플리케이션 수준 설정은 프로시저와 독립적입니다. 프로시저가 완료된 후에는 수동으로 “다시 설정”되지 않습니다. 대신 원하는 경우 수동으로 다시 변경해야 합니다.

프로시저 빌더에서는 다음과 같은 애플리케이션 수준 설정을 설정할 수 있습니다:

참고: ‘완료 후 메시지 상자 표시’는 application.setting이 아니므로 다음 섹션에서 설명합니다.

화면 업데이트 비활성화 – 절차가 실행되는 동안 화면이 새로 고쳐지지 않습니다. 이렇게 하면 처리 시간을 크게 줄일 수 있습니다.

자동 계산 사용 안 함 – 자동 계산을 해제하는 Excel 설정입니다. 이렇게 하면 처리 시간을 크게 단축할 수 있습니다.

경고 비활성화 – 경고 메시지 및 프롬프트가 사용자에게 표시되지 않습니다. 대신 VBA가 기본 작업을 처리합니다.

이벤트 사용 안 함 – 이벤트는 코드가 실행될 수 있는 ‘트리거’입니다(예: 통합 문서 열기, 시트 활성화, 셀 변경 등). 통합 문서에 이벤트가 있는 경우 코드가 실행되는 동안 이벤트를 비활성화하여 의도하지 않은 동작(무한 루프 포함)을 방지하고 싶을 수 있습니다.

프로시저 완료 시메시지 상자 – 실행하는 데 몇 초 이상 걸리는 프로시저의 경우 완료 시 메시지 상자를 표시하는 것이 좋습니다. 이렇게 하면 프로시저 실행이 완료되었음을 사용자에게 알릴 수 있습니다. 고객의 경우 일반적으로 실행하는 데 15초 이상 걸리는 모든 프로시저에 대해 메시지 상자 알림을 설정합니다.

오류 처리 – 기본적으로 VBA는 오류가 발생하면 코드 실행을 중지하고 사용자에게 코드를 ‘디버그’하라는 메시지를 표시합니다. 이는 테스트/개발 중에 바람직한 기능입니다. 그러나 다른 방법으로 오류를 처리하는 것이 바람직한 시나리오가 많이 있습니다.

오류 처리는 프로시저 수준에서 정의됩니다. 애플리케이션 수준 설정이 아닙니다. 따라서 기본값이 아닌 오류 처리가 필요한 모든 프로시저에는 오류 처리 선언이 필요합니다:

  • 오류 발생 시 다음 재개: VBA는 오류가 포함된 줄을 건너뛰고 다음 코드 줄을 계속 진행합니다.
  • 오류 발생 시 Error_Handle로 이동: 오류가 발생하면 VBA는 프로시저의 정의된 섹션(이 경우 ‘Error_Handle’)으로 “이동”합니다. 오류에 대한 메시지 상자를 표시하거나, 반복/다시 시도하거나, 코드 섹션을 건너뛰는 데 유용합니다.
  • 오류 발생 시 종료: 이것은 실제로 이전 설정과 동일하지만 여기서 ‘이동’은 프로시저의 끝 부분에 있는 섹션으로 이동합니다.

기본 오류 처리로 복원하려면 다음을 입력합니다:

오류 발생 시 0으로 이동

이는 테스트/개발 중에 바람직합니다. 그러나 다른 방식으로 오류를 처리하는 것이 바람직한 시나리오가 많이 있습니다.

참고: 의도적으로 오류를 허용하고 오류 처리를 사용하여 오류를 처리하는 것은 피하는 것이 ‘모범 사례’입니다. 대신 더 스마트한 코드를 사용하여 애초에 VBA 오류가 발생하지 않도록 해야 합니다.

프로시저 빌더: 오류 처리:

Excel 자동화 시작