모던지 / 컴퓨터활용능력 / 스프레드시트 6강. 매크로와 VBA

스프레드시트 6강. 매크로와 VBA

매크로를 저장했는데 다음 날 사라졌다면, 파일 확장자를 확인해 보세요.

풀고 시작

문제 1. 매크로가 포함된 엑셀 통합 문서를 저장할 때 사용해야 하는 확장자는 무엇일까요?
xlsx는 매크로를 저장하지 않습니다. 매크로가 든 문서를 xlsx로 저장하면 경고와 함께 코드가 통째로 사라지죠. 매크로를 담으려면 xlsm으로 저장해야 합니다. 매크로가 사라졌다는 사고의 대부분이 이 확장자 문제입니다.

반복은 사람이 할 일이 아닙니다

매달 같은 보고서를 만드는 일을 생각해 보세요. 열 폭을 맞추고 서식을 걸고 합계를 넣고 인쇄 설정을 바꿉니다. 스무 번쯤 하고 나면 손이 저절로 움직이지만, 손은 실수도 저절로 합니다.

매크로(macro) 는 이 반복을 한 번 기록해 두고 재생하는 기능입니다. 기록 버튼을 누르고 평소처럼 작업한 뒤 정지를 누르면, 그 사이의 동작이 VBA(Visual Basic for Applications) 코드로 저장됩니다. 코드를 몰라도 만들 수 있다는 점이 매크로의 미덕이죠.

기록할 때 정해야 할 것이 몇 가지 있습니다.

매크로 이름은 규칙이 있습니다. 첫 글자는 반드시 문자여야 하고 숫자나 기호로 시작할 수 없습니다. 공백을 쓸 수 없어 밑줄로 대신합니다. 마침표나 느낌표 같은 기호도 안 됩니다.

바로 가기 키는 Ctrl과 영문자 한 글자를 묶습니다. 여기 함정이 있습니다. 엑셀이 이미 쓰는 키를 지정하면 매크로가 이깁니다. Ctrl+C에 매크로를 걸면 그 문서에서는 복사가 되지 않죠. 그래서 대문자를 써서 Ctrl+Shift 조합으로 만드는 편이 안전합니다.

저장 위치도 셋 중에 고릅니다. 현재 통합 문서에 두면 그 파일에서만 쓰이고, 개인용 매크로 통합 문서에 두면 엑셀을 열 때마다 자동으로 불러와져 모든 문서에서 쓸 수 있습니다. 자주 쓰는 매크로는 여기에 둡니다.

기록기가 남기는 코드의 함정

매크로 기록기는 편리하지만 눈으로 본 것을 그대로 적습니다. 그래서 B5 셀을 클릭했다면 코드에도 B5가 박힙니다. 다음 달에 행이 하나 늘어 데이터가 B6부터 시작하면 매크로는 여전히 B5를 건드리죠.

이 문제를 다루는 것이 상대 참조로 기록 옵션입니다. 켜 두면 "현재 위치에서 아래로 한 칸"처럼 상대적으로 기록됩니다. 기본값은 절대 참조 기록이고, 기록 도중에도 켜고 끌 수 있습니다.

기록된 코드는 VBE(Visual Basic Editor) 에서 볼 수 있습니다. Alt+F11로 엽니다. 여기서 코드를 고칠 수도 있고, 기록으로는 만들 수 없는 조건과 반복을 넣을 수도 있습니다.

VBA 코드의 뼈대는 두 종류입니다. Sub 프로시저는 동작을 수행하고 값을 돌려주지 않습니다. 매크로가 여기 해당하죠. Function 프로시저는 값을 돌려주며, 워크시트에서 함수처럼 부를 수 있습니다. 엑셀에 없는 계산이 필요할 때 직접 만들어 쓰는 사용자 정의 함수가 이것입니다.

매크로를 실행하는 여러 갈래

만든 매크로는 여러 방법으로 실행합니다. Alt+F8로 목록을 열어 고르거나, 지정한 바로 가기 키를 누르거나, 도형이나 단추에 연결해 클릭으로 실행하거나, 빠른 실행 도구 모음에 올려 둘 수 있습니다. 도형에 연결하는 방식은 매크로를 모르는 사람도 쓸 수 있게 만들어 준다는 점에서 유용합니다.

보안도 짚어야 합니다. 매크로는 파일을 지우거나 다른 프로그램을 실행할 수 있는 진짜 코드입니다. 실제로 매크로 바이러스가 오래도록 골칫거리였죠. 그래서 엑셀은 외부에서 받은 xlsm 파일을 열 때 매크로를 기본적으로 막고 사용자에게 묻습니다. 노란 경고 막대의 "콘텐츠 사용"을 누르기 전에, 그 파일을 신뢰할 수 있는지 먼저 생각하셔야 합니다.

인출 문제

문제 1. 매크로 이름으로 사용할 수 있는 것은 무엇일까요?
매크로 이름은 문자로 시작해야 하고 공백과 마침표 같은 기호를 쓸 수 없습니다. 숫자로 시작하는 첫 보기, 공백이 든 둘째 보기, 마침표가 든 셋째 보기가 모두 걸립니다. 밑줄은 허용되고 이름 중간의 숫자도 괜찮습니다.
문제 2. 매크로 기록 시 상대 참조 기록 옵션에 대한 설명으로 옳은 것은 무엇일까요?
기본값은 절대 참조 기록이고, 상대 참조 기록을 켜면 현재 셀을 기준으로 한 이동으로 기록됩니다. 기록 도중에도 켜고 끌 수 있어 부분적으로 섞어 쓸 수 있습니다. 속도와는 관계가 없습니다.
문제 3. Visual Basic Editor를 여는 바로 가기 키는 무엇일까요?
Alt+F11이 VBE를 엽니다. Alt+F8은 매크로 목록 대화상자를 여는 키이고, Ctrl+F11은 새 매크로 시트를 삽입하는 오래된 단축키입니다. 두 조합을 뒤바꾼 보기가 자주 출제됩니다.
문제 4. Sub 프로시저와 Function 프로시저의 차이로 옳은 것은 무엇일까요?
Function은 결과값을 돌려주므로 셀에서 사용자 정의 함수로 부를 수 있습니다. Sub는 동작을 수행할 뿐 값을 돌려주지 않으며 매크로가 여기 해당합니다. 방향을 뒤집은 첫 보기가 가장 흔한 함정입니다.

생각해볼 질문 (정답 없음)

  • 매크로 기록기가 만든 코드는 사람이 직접 쓴 코드보다 대체로 장황합니다. 그런데도 기록기가 여전히 유용한 이유는 무엇일까요. 코드를 배우는 도구로서의 가치를 생각해 보세요.

이전: 스프레드시트 5강 · 다음: 데이터베이스 일반 1강

모던지 · 궁금하면 모던지 GitHub · 2026-09-10