엑셀 셀 클릭 자동 입력 매크로는 표준 모듈이 아니라 해당 시트 모듈에 넣어야 작동하고, 기존 인쇄 매크로는 표준 모듈에 그대로 두면 서로 충돌하지 않아요.

셀 클릭 입력 매크로가 안 먹거나 인쇄 매크로와 부딪히는 상황
셀을 누르면 다른 셀에 값이 들어가게 만들 때 자주 막히는 지점은 코드 위치, 저장 형식, 보안 설정이에요. 상황별 원인과 해결을 한눈에 정리했어요.
| 상황 | 원인 | 해결 |
|---|---|---|
| 셀을 눌러도 아무 반응이 없어요 | 코드를 표준 모듈(Module1)에 붙여넣음 | 해당 시트 모듈 창에 코드를 옮겨요 |
| 기존 인쇄 버튼이 멈췄어요 | 인쇄 매크로가 있는 모듈을 건드리거나 지움 | 인쇄 매크로는 표준 모듈에 그대로 두고, 새 코드는 시트 모듈에만 넣어요 |
| 파일을 닫았다 열면 코드가 사라져요 | xlsx 형식으로 저장함 | xlsm(매크로 사용 통합 문서)으로 저장해요 |
| 매크로가 아예 실행되지 않아요 | 매크로 보안이 기본값인 '모든 매크로 제외(알림 표시)' | 콘텐츠 사용을 눌러 허용해요 |
시트 이벤트 매크로가 표준 모듈에서 실행되지 않는 이유
셀을 선택하거나 더블클릭하는 동작에 반응하는 매크로는 워크시트 이벤트라고 불러요. 이런 코드는 Worksheet_SelectionChange(셀 선택이 바뀔 때)나 Worksheet_BeforeDoubleClick(더블클릭할 때) 같은 이름의 프로시저로 만들고, 그 시트에 속한 모듈 안에 있어야만 엑셀이 동작과 연결해 줘요.
표준 모듈(Module1)에 같은 코드를 붙여넣으면 엑셀이 워크시트 이벤트와 연결하지 못해서 아무리 셀을 클릭해도 실행되지 않아요. 코드는 맞는데 안 돌아가는 가장 흔한 원인이에요.
인쇄 매크로와의 충돌도 걱정할 필요가 적어요. 도형이나 양식 컨트롤 버튼에 연결해 둔 인쇄 매크로는 표준 모듈에 있고, 셀 클릭 매크로는 시트 모듈에 있어서 저장 위치가 서로 달라요. 이름이 같은 프로시저만 만들지 않으면 둘은 따로 공존해요.
같은 시트 모듈 안에 SelectionChange 프로시저를 이미 만들어 둔 경우에는 같은 이름을 하나 더 만들 수 없어요. 기존 프로시저 안에 내용을 합쳐야 해요.
코드를 넣기 전에 점검할 항목
작업 전에 아래 항목만 확인해도 대부분의 실패를 막을 수 있어요. 특히 원본 파일을 건드리기 전에 사본부터 만들어 두세요.
- ✓파일 형식: 확장자가 xlsm인지 봐요. xlsx로 저장하면 VBA 코드가 삭제돼요.
- ✓원본 사본: 라벨 양식처럼 이미 쓰는 파일은 복사본에서 먼저 시험해요.
- ✓기존 인쇄 매크로 위치: Alt+F11로 편집기를 열어 인쇄 매크로가 어느 모듈에 있는지 확인해요.
- ✓매크로 보안: 기본값은 '모든 매크로 제외(알림 표시)'라서 콘텐츠 사용을 허용해야 실행돼요.
- ✓적용 셀 범위: 클릭할 셀이 연속 범위인지, 값을 넣을 셀이 하나인지 먼저 정리해 둬요.
- ✓병합 셀 여부: 대상 셀이 병합되어 있으면 오류가 날 수 있으니 병합 범위를 확인해요.
시트 모듈에 코드를 넣고 인쇄 매크로와 함께 쓰는 순서
순서는 편집기 열기, 올바른 시트 모듈 선택, 코드 입력, 저장, 동작 확인이에요. 인쇄 매크로가 있는 모듈은 열어 보기만 하고 수정하지 않아요.
- 사본 만들기: 라벨 양식 파일을 복사해 시험용 파일을 만들어요.
- 편집기 열기: Alt+F11을 눌러 Visual Basic 편집기를 열어요.
- 시트 모듈 열기: 왼쪽 프로젝트 창에서 첫 번째 시트 이름을 더블클릭해요. 열리는 시트 모듈 창이 코드를 넣을 곳이에요.
- 코드 입력: 셀 선택이 바뀔 때 반응하는 SelectionChange 프로시저 안에서, 선택한 셀이 대상 범위인지 먼저 확인한 뒤 해당 값을 지정한 셀에 넣도록 작성해요. 범위 밖의 셀을 눌렀을 때는 아무 일도 하지 않게 해요.
- 표준 모듈 확인: Module1에 있는 인쇄 매크로는 그대로 두고, 같은 이름의 프로시저가 없는지만 봐요.
- xlsm으로 저장: 매크로 사용 통합 문서 형식으로 저장하고 파일을 닫았다가 다시 열어요.
- 동작 시험: 콘텐츠 사용을 누른 뒤 대상 셀을 눌러 값이 들어가는지 보고, 인쇄 버튼도 눌러 기존대로 되는지 확인해요.
값을 입력하는 코드가 다시 셀 변경 이벤트를 일으키는 구조면 반복 실행될 수 있어요. 이런 경우 입력 직전에 이벤트를 잠시 꺼 두는 방식으로 작성해요.
그래도 동작하지 않을 때 점검할 곳
코드를 시트 모듈에 넣었는데도 반응이 없다면 먼저 다른 시트 모듈에 넣지 않았는지 보세요. 코드는 클릭이 일어나는 시트의 모듈에 있어야 해요. 그다음 매크로 보안 알림 줄에서 콘텐츠 사용을 눌렀는지 확인해요.
인쇄 매크로가 멈췄다면 인쇄 버튼에 연결된 매크로 이름이 바뀌었거나 삭제되지 않았는지 살펴보세요. 버튼을 오른쪽 클릭해 매크로 지정 창에서 연결된 이름을 볼 수 있어요.
코드 오류 메시지가 나오면 편집기에서 노란색으로 표시된 줄을 확인하고, 그 내용과 함께 사본 파일을 컴퓨터 사용 전문가나 사내 IT 담당자에게 보여 주면 가장 빨라요. 회사 파일이라면 매크로 사용이 허용되는지도 담당자에게 먼저 확인하세요.
자주 묻는 질문
한 번 클릭만으로 반응시키려면 셀 선택이 바뀔 때 실행되는 SelectionChange를, 더블클릭에 반응시키려면 BeforeDoubleClick을 써요. 둘 다 시트 모듈에 넣는다는 점은 같아요.
가능해요. 인쇄 매크로는 표준 모듈에 두고 새 코드는 시트 모듈에 넣으면 저장 위치가 달라 서로 영향을 주지 않아요. 같은 이름의 프로시저만 만들지 않으면 돼요.
xlsx 형식으로 저장하면 VBA 코드가 삭제돼요. 셀 클릭 매크로와 인쇄 매크로가 모두 사라지니 반드시 xlsm으로 저장해요.