엑셀 매크로 종류별 차이, 처음 선택이 나중 수정량을 결정한다

매크로를 완성했는데 다른 셀에서 실행하면 엉뚱한 곳을 건드린다. 처음부터 절대참조로 기록했기 때문이다. 엑셀 매크로 종류는 기록 방식·저장 위치·실행 트리거·VBA 프로시저 유형, 이렇게 네 축으로 나뉘며, 어느 종류를 선택하느냐에 따라 재사용성과 유지보수 부담이 완전히 달라진다. 기능을 만들기 전에 이 분류를 이해하면, 완성 후에 전부 뜯어고치는 상황을 피할 수 있다.

절대참조 vs 상대참조 — 가장 먼저 결정해야 할 기록 방식

매크로 기록기를 열면 기본값은 절대참조다. 이 상태로 기록하면 “B3 셀에 값을 입력한다”처럼 좌표가 고정된다. 나중에 C3에서 실행해도 매크로는 여전히 B3를 건드린다. 의도한 결과가 나오지 않아도 엑셀은 오류를 내지 않는다. 조용히 틀린 셀을 덮어쓸 뿐이다.

상대참조로 전환하면 “현재 커서에서 오른쪽 한 칸”처럼 상대 좌표로 기록된다. 어느 셀에서 실행해도 커서 기준으로 동작한다. 실무에서는 대부분 상대참조가 더 유용하다. 다만 항상 같은 셀 범위를 처리하는 고정 서식이나 고정 출력 매크로라면 절대참조가 오히려 안전하다.

구분 절대참조 상대참조
기록 기준 고정 셀 좌표 커서 위치 기준
적합한 상황 항상 같은 셀 처리 반복 행·열 처리
재사용성 낮음 높음
기본값 여부 기본값(기록기) 버튼 클릭 후 전환

전환 버튼은 개발 도구 탭에서 매크로 기록을 시작하기 전에 [상대 참조로 기록]을 클릭하면 된다. 기록 도중에도 전환은 가능하다. 그러나 중간에 방식을 바꾸면 VBA 코드 안에 두 방식이 혼재돼 나중에 읽기 어려워진다. 처음부터 방식을 정하고 시작하는 것이 원칙이다.

저장 위치가 매크로의 범용성을 결정한다

엑셀 매크로는 세 곳에 저장할 수 있다. 이 선택은 “어느 파일에서 이 매크로를 쓸 수 있는가”를 결정하므로, 만들기 전에 반드시 짚어야 한다.

  • 현재 통합 문서: 지금 열린 .xlsm 파일 안에만 저장된다. 파일을 공유하면 매크로도 함께 이동한다. 팀원에게 배포하거나 파일 단위로 자동화를 묶을 때 적합하다.
  • 새 통합 문서: 새 파일에 저장된다. 실무에서 거의 쓰이지 않는다.
  • 개인용 매크로 통합 문서(Personal.xlsb): 엑셀이 시작될 때 자동으로 숨겨진 채 열리는 파일이다. 여기에 저장된 매크로는 어떤 파일에서도 실행할 수 있다. PC에 종속되므로 개인 반복 작업용 유틸리티 매크로에 가장 적합하다.

흔한 실수는 개인 유틸리티를 현재 통합 문서에 저장하는 것이다. 다음 달 다른 파일을 열었을 때 매크로가 보이지 않아 당황하게 된다. 반대로, 팀 공유용 매크로를 Personal.xlsb에 넣으면 본인 PC에서만 동작한다. 용도와 배포 범위를 먼저 정하고 저장 위치를 선택해야 한다.

실행 트리거 — 단축키·버튼·이벤트, 세 가지 방식

매크로를 어떻게 실행시킬 것인가도 종류를 나누는 기준이다. 세 가지 방식이 있고, 각기 다른 맥락에서 쓰인다.

단축키 매크로

기록 또는 등록 시 Ctrl+단축키를 지정한다. 빠르지만 기존 엑셀 단축키와 충돌할 수 있다. Ctrl+S(저장), Ctrl+C(복사) 같은 기본 단축키를 덮어쓰면 혼란이 생긴다. Ctrl+Shift+알파벳 조합이 상대적으로 안전하다.

버튼(도형·양식 컨트롤) 매크로

시트에 버튼이나 도형을 삽입하고 매크로를 연결한다. 비개발자에게 배포할 때 가장 직관적인 방식이다. 버튼 텍스트로 기능을 설명할 수 있어 별도 가이드 없이도 사용 가능하다. 개발 도구 탭 → 삽입 → 양식 컨트롤에서 버튼을 삽입하면 연결할 매크로를 선택하는 창이 바로 뜬다.

이벤트 매크로

특정 동작이 발생하면 자동으로 실행된다. 사용자가 실행 버튼을 누르지 않아도 동작한다는 점에서 나머지 두 방식과 근본적으로 다르다. 대표적인 이벤트는 아래와 같다.

  • Workbook_Open: 파일을 열 때 자동 실행. 환경 초기화·접속 로그 기록에 활용
  • Worksheet_Change: 특정 셀 값이 바뀔 때 실행. 입력값 검증이나 자동 계산에 활용
  • Worksheet_Activate: 시트를 클릭해 활성화할 때 실행. 화면 새로고침에 활용

이벤트 매크로의 가장 큰 위험은 루프다. Worksheet_Change 안에서 셀을 수정하면, 그 수정이 다시 이벤트를 발생시켜 무한 반복된다. 이를 막으려면 코드 첫 줄에 Application.EnableEvents = False를 넣고, 작업 완료 후 반드시 True로 되돌려야 한다.

VBA 프로시저 종류: Sub와 Function

기록기로 만든 매크로는 전부 Sub 프로시저다. 그런데 VBA에는 값을 반환하는 Function 프로시저도 존재한다. 둘의 역할은 명확히 나뉜다.

  • Sub 프로시저: 작업을 수행하지만 값을 반환하지 않는다. 셀 서식 변경, 데이터 복사·삭제, 파일 열기/닫기 등 대부분의 자동화 작업이 여기에 해당한다. 단축키·버튼·이벤트로 실행한다.
  • Function 프로시저(UDF): 값을 계산해 반환한다. 셀 수식에서 =MyFunction(A1)처럼 사용자 정의 함수로 호출할 수 있다. 기존 엑셀 함수로 처리하기 어려운 복잡한 계산을 캡슐화할 때 유용하다.

이 경계가 중요한 이유가 있다. Function 안에서 셀을 직접 변경하거나 화면을 조작하면 엑셀이 경고 없이 그 명령을 무시하거나 오류를 낸다. Function은 계산만, Sub는 동작만이라는 원칙을 지켜야 나중에 디버깅이 훨씬 쉽다.

처음 만들기 전 — 종류별 선택 체크리스트

매크로를 새로 만들기 전에 아래 네 가지를 순서대로 결정하면 완성 후 다시 만드는 일을 줄일 수 있다.

  • 셀 위치가 고정인가, 이동하는가? → 고정이면 절대참조, 이동하면 상대참조
  • 이 파일만 쓸 것인가, 어느 파일에서나 쓸 것인가? → 파일 배포용이면 현재 통합 문서, 개인 유틸리티면 Personal.xlsb
  • 사람이 실행하는가, 자동으로 실행되는가? → 수동이면 단축키·버튼, 자동이면 이벤트
  • 작업을 수행하는가, 값을 반환하는가? → 수행이면 Sub, 반환이면 Function

매크로 설정 자체가 처음이라면, 엑셀 매크로 설정하는 법부터 확인하는 것이 순서에 맞다. 개발 도구 탭 활성화부터 첫 실행까지 단계별로 정리되어 있다.

정리

엑셀 매크로 종류는 단순히 “기록기냐 VBA냐”로 나뉘지 않는다. 기록 방식(절대·상대참조), 저장 위치(현재 문서·Personal.xlsb), 실행 트리거(단축키·버튼·이벤트), 프로시저 유형(Sub·Function) — 이 네 축이 교차해 매크로의 성격을 결정한다. 처음 세팅을 잘못 잡으면 완성 후에 전부 뜯어고쳐야 하는 상황이 생긴다. 만들기 전에 네 가지 질문에 먼저 답하는 습관이 실무 효율을 가장 빠르게 올린다.

자주 묻는 질문

엑셀 매크로 기록기로 만든 매크로와 VBA 매크로는 다른 건가요?

다르지 않습니다. 기록기로 만든 매크로도 내부적으로 VBA 코드로 저장됩니다. 기록기는 사용자의 동작을 VBA 코드로 자동 변환해 주는 도구이며, Alt+F11로 VBA 에디터를 열면 기록된 코드를 직접 확인하고 수정할 수 있습니다.

절대참조 매크로와 상대참조 매크로 중 어느 것을 먼저 배워야 하나요?

상대참조를 먼저 익히는 것이 실용적입니다. 반복 행이나 반복 열을 처리하는 업무가 훨씬 많기 때문입니다. 단, 매크로 기록기의 기본값이 절대참조이므로 기록 시작 전에 [상대 참조로 기록] 버튼을 클릭하는 습관을 들여야 합니다.

개인용 매크로 통합 문서(Personal.xlsb)는 어디에 저장되나요?

Windows 기준으로 C:\Users\사용자명\AppData\Roaming\Microsoft\Excel\XLSTART 폴더에 저장됩니다. 엑셀이 시작할 때 이 폴더의 파일을 자동으로 숨김 모드로 열기 때문에 어떤 통합 문서에서도 Personal.xlsb의 매크로를 실행할 수 있습니다.

이벤트 매크로를 잘못 설정하면 어떻게 되나요?

이벤트 루프가 발생할 수 있습니다. 예를 들어 Worksheet_Change 이벤트 안에서 셀을 수정하면, 그 수정이 다시 이벤트를 발생시켜 무한 반복됩니다. 이를 막으려면 코드 앞에 Application.EnableEvents = False를 추가하고, 작업 후 반드시 True로 되돌려야 합니다.

매크로가 포함된 엑셀 파일은 어떤 형식으로 저장해야 하나요?

반드시 .xlsm(매크로 사용 통합 문서) 형식으로 저장해야 합니다. 일반 .xlsx로 저장하면 매크로가 삭제된다는 경고가 표시되고, 저장 시 VBA 코드가 모두 사라집니다.

Leave a Comment