엑셀 매크로 종류는 몇 가지? 기록·VBA·이벤트 프로시저 선택 기준

매크로를 배우다 중간에 포기하는 가장 흔한 패턴이 있다. VBA 창을 켜자마자 코드부터 치다가 오류 메시지를 만나는 것이다. 엑셀 매크로 종류는 기록 매크로·Sub·Function·이벤트 프로시저 네 가지로 나뉘며, 코드 없이 쓸 수 있는 유형도 있다. 어떤 작업에 어떤 종류가 맞는지를 먼저 파악하면, 시작 지점을 훨씬 좁힐 수 있다.

코드 없이 만드는 기록 매크로

기록 매크로는 엑셀이 제공하는 가장 진입 장벽이 낮은 자동화 방법이다. [개발 도구] 탭 → [매크로 기록]을 누른 뒤 원하는 동작을 직접 수행하면, 엑셀이 그 과정을 VBA 코드로 자동 변환해 저장한다. 기록이 끝나면 같은 작업을 버튼 하나로 재실행할 수 있다.

단, 기록 매크로에는 명확한 한계가 있다. 조건 분기(if)나 반복 루프(for)처럼 논리를 담을 수 없고, 기록 시점의 셀 주소가 고정되어 데이터 범위가 달라지면 오작동한다. 반복 작업이 단순하고 범위가 고정된 경우에만 안정적으로 작동한다.

  • 코딩 지식 불필요 — 클릭 동작을 그대로 캡처
  • 절대 참조(고정 셀)와 상대 참조(이동 셀) 모드 선택 가능
  • 조건·반복 같은 복잡한 로직은 담을 수 없음
  • 생성된 코드는 VBA 편집기에서 직접 수정 가능

VBA 매크로의 기본 — Sub 프로시저

VBA에서 Sub 이름()으로 시작하는 코드 블록을 Sub 프로시저라고 한다. 동작을 실행하는 매크로의 기본 형태다. 셀 서식 일괄 변경, 시트 정렬, 특정 범위 복사·붙여넣기처럼 “무언가를 한다”는 작업 전반에 쓰인다.

기록 매크로도 저장되면 결국 Sub 프로시저 형태가 된다. 차이는 직접 코드를 작성하느냐, 기록기가 대신 써주느냐다. Sub는 단독으로 실행하거나 버튼에 연결하거나, 다른 Sub에서 호출하는 식으로 유연하게 조합할 수 있다. 매크로와 VBA의 관계를 먼저 짚어두면 Sub 프로시저가 왜 매크로의 핵심인지 이해가 빠르다.

반환값이 없고, 실행 결과가 시트에 바로 나타나기 때문에 테스트가 쉽다는 것도 장점이다. 처음 VBA를 배울 때 Sub부터 시작하는 이유가 여기에 있다.

셀 수식처럼 쓰는 Function 프로시저

Function 프로시저는 Sub와 달리 값을 계산해 반환한다. 워크시트에서 =내함수이름(인수) 형태로 셀에 직접 입력해 사용하는 ‘사용자 정의 함수(UDF)’가 바로 이 유형이다. 엑셀 기본 함수로는 한 번에 처리하기 어려운 조건별 텍스트 추출, 복합 계산식 등을 Function으로 만들면 셀 수식처럼 재사용할 수 있다.

중요한 제약이 하나 있다. Function 프로시저는 원칙적으로 셀 서식을 바꾸거나 다른 셀에 값을 직접 입력하는 ‘부작용(side effect)’이 허용되지 않는다. 계산하고 반환하는 역할만 한다. 동작 실행이 필요하다면 Sub로 가야 한다.

구분 Sub 프로시저 Function 프로시저
반환값 없음 있음 (셀에 반환)
호출 방식 버튼·단축키·다른 Sub 워크시트 수식 (=함수명())
주 용도 동작 실행 (서식, 복사 등) 값 계산 및 반환
시트 직접 변경 가능 제한적

자동으로 실행되는 이벤트 프로시저

이벤트 매크로는 특정 동작이 발생했을 때 자동으로 실행된다. 버튼을 누르거나 단축키를 입력하지 않아도 된다. 대표적인 사용 사례는 다음과 같다.

  • 특정 셀의 값이 바뀌면 자동으로 계산 또는 서식 적용 (Worksheet_Change)
  • 시트를 활성화할 때 데이터를 자동 갱신 (Worksheet_Activate)
  • 파일을 열 때 초기화 작업 실행 (Workbook_Open)
  • 파일 저장 직전에 유효성 검사 진행 (Workbook_BeforeSave)

이벤트 매크로는 VBA 편집기(Alt+F11)에서 ThisWorkbook 모듈이나 해당 Sheet 모듈에 직접 작성해야 한다. 일반 모듈에 넣으면 이벤트 트리거로 작동하지 않는다. 입문자가 가장 자주 헷갈리는 지점이 바로 이 모듈 위치다.

저장 위치에 따른 구분

매크로를 만든 뒤 어디에 저장할지도 실무에서 중요하다. 기록 매크로를 만들 때 엑셀은 세 가지 저장 위치를 제안한다.

  • 개인용 매크로 통합 문서: 엑셀을 열 때마다 숨김 파일(PERSONAL.XLSB)이 자동 로드되어, 어느 파일에서든 해당 매크로를 쓸 수 있다. 자주 사용하는 범용 매크로에 적합하다.
  • 현재 통합 문서: 해당 .xlsm 파일 안에만 저장된다. 파일을 동료에게 보내면 매크로도 함께 전달된다.
  • 새 통합 문서: 새로 열리는 빈 파일에 저장. 실무에서는 거의 쓰지 않는 옵션이다.

매크로가 담긴 파일은 반드시 .xlsm(매크로 포함 통합 문서) 형식으로 저장해야 한다. 일반 .xlsx로 저장하면 매크로 코드가 삭제된다. 처음 저장할 때 파일 형식을 바꾸지 않아 작업이 날아가는 실수가 의외로 많다.

상황별 선택 기준

네 가지 종류 중 무엇을 쓸지는 작업의 성격으로 판단한다.

  • 단순 반복 작업이고 코드를 모른다 → 기록 매크로
  • 조건 분기·반복 루프가 필요하다 → Sub 프로시저
  • 셀 수식처럼 쓸 사용자 정의 함수가 필요하다 → Function 프로시저
  • 셀 변경·파일 열기 등 특정 동작에 자동 반응이 필요하다 → 이벤트 프로시저

예를 들어 피벗테이블의 행·열·값 필드를 특정 시트가 활성화될 때마다 자동 갱신하고 싶다면 이벤트 매크로와 피벗테이블을 함께 조합하는 방식이 효율적이다. 이벤트 유형 하나만 알아도 자동화 범위가 크게 달라진다.

정리

엑셀 매크로 종류는 넷이다. 기록 매크로는 코드 없이 클릭을 저장하고, Sub 프로시저는 동작을 실행하며, Function 프로시저는 값을 계산해 셀에 돌려주고, 이벤트 프로시저는 특정 상황에 자동으로 반응한다. 저장 위치(개인용·현재 파일)와 파일 형식(.xlsm)까지 구분하면 실무에서 생기는 대부분의 혼란을 피할 수 있다. 어떤 유형을 쓸지 먼저 결정한 뒤 코드를 배우면, 처음부터 VBA 문법 전체를 외우려 했을 때보다 훨씬 빠르게 결과를 만들어낼 수 있다.

자주 묻는 질문

엑셀 매크로는 몇 가지 종류인가요?

크게 네 가지입니다. 기록 매크로(매크로 기록기로 생성), Sub 프로시저(동작 실행), Function 프로시저(값 계산·반환), 이벤트 프로시저(특정 상황에 자동 실행)로 나뉩니다.

코딩을 몰라도 매크로를 만들 수 있나요?

네. 기록 매크로는 엑셀이 클릭 동작을 VBA 코드로 자동 변환해 줍니다. 단, 조건 분기나 반복 루프처럼 논리가 필요한 작업은 직접 VBA를 작성해야 합니다.

Sub 매크로와 Function 매크로는 어떻게 다른가요?

Sub는 동작(서식 변경, 데이터 복사 등)을 실행하며 반환값이 없습니다. Function은 계산 결과를 반환해 셀 수식처럼 =함수명() 형태로 직접 입력해 사용합니다.

이벤트 매크로는 어디에 작성하나요?

VBA 편집기(Alt+F11) 내 ThisWorkbook 또는 Sheet 모듈에 작성합니다. 일반 모듈에 넣으면 이벤트 트리거로 작동하지 않습니다.

매크로가 포함된 파일을 저장할 때 주의할 점은?

반드시 .xlsm(매크로 포함 통합 문서) 형식으로 저장해야 합니다. 일반 .xlsx로 저장하면 엑셀이 경고 없이 매크로 코드를 삭제합니다.