교육으로Troubleshoot

오류 해결 가이드

VBA 매크로에서 자주 만나는 오류 코드와 해결 방법

Run-time error 9
첨자가 적용된 범위를 벗어남 (Subscript out of range)
원인
존재하지 않는 시트 이름을 참조했을 때. 예: Sheets("Sheet1")인데 시트 이름이 다른 경우.
해결
1) 빌더 01 섹션의 "시트 선택 방식"에서 정확한 시트 이름 입력 2) 비워두면 첫 번째 시트 자동 선택 3) 시트 모드를 "전체 시트"나 "이름 패턴"으로 바꾸면 시트 이름 신경 안 써도 됨
Run-time error 1004
응용 프로그램 정의 오류 또는 개체 정의 오류 (Application-defined or object-defined error)
원인
시트 보호·잘못된 셀 참조·범위 외 인덱스·파일 잠김 등 광범위. 가장 흔한 원인은 결과 시트가 보호되어 있거나 다른 사용자가 열고 있는 경우.
해결
1) 결과 시트의 보호 해제 (검토 → 시트 보호 해제) 2) 결과 파일을 다른 사람이 열고 있지 않은지 확인 3) 헤더 보호 행 수가 너무 커서 데이터 시작 행과 충돌하지 않는지 확인
Run-time error 429
ActiveX 구성 요소가 개체를 만들 수 없음 (ActiveX component can't create object)
원인
PowerPoint·Word·Outlook이 설치되지 않은 환경에서 CreateObject("...")를 호출했을 때.
해결
1) 해당 Office 앱 설치 확인 2) 32/64bit 호환성 확인 (Excel과 같은 비트로 설치되어야 함) 3) 빌더에서 그 출력 카테고리를 끄고 다시 시도
Run-time error 53
파일을 찾을 수 없음 (File not found)
원인
Dir() 또는 Workbooks.Open이 지정한 경로/파일을 못 찾음. 한글 경로·OneDrive 클라우드 전용 파일이 주요 원인.
해결
1) 폴더·파일명을 영문으로 변경 2) OneDrive 파일은 "이 장치에 항상 보관"으로 표시 3) 경로 끝의 백슬래시(\) 누락 확인 4) 파일명 패턴 와일드카드(*)가 정확한지 확인
Run-time error 13
타입이 일치하지 않음 (Type mismatch)
원인
숫자가 와야 할 곳에 문자열, 또는 날짜 변환 실패. 빈 셀 또는 잘못된 형식의 셀에서 자주 발생.
해결
1) 빌더 02 섹션의 "빈 행 건너뛰기" 활성화 2) 날짜 변환 사용 시 원본 열이 정말 날짜 형식인지 확인 (텍스트로 저장된 날짜는 변환 안 됨) 3) 합계 셀 기준 열에 텍스트가 섞여 있지 않은지 확인
Run-time error 6
오버플로 (Overflow)
원인
Long(±21억) 범위를 넘는 큰 숫자를 처리할 때.
해결
1) 매우 큰 숫자가 있는 열은 매크로 외부에서 SUM 등을 처리하고 결과만 셀에 두기 2) 해당 컬럼은 합계 자동 계산에서 제외
Compile error: User-defined type not defined
사용자 정의 형식이 정의되지 않음
원인
Word/PowerPoint/Outlook 객체 라이브러리가 참조되지 않은 상태에서 Early Binding 사용. VIBAE는 항상 Late Binding(Object 타입)을 쓰기 때문에 정상 매크로에서는 발생하지 않지만, 사용자가 직접 코드를 수정하다가 발생할 수 있음.
해결
1) Dim oPpt As PowerPoint.Application 같은 Early Binding을 Dim oPpt As Object로 변경 2) 또는 도구 → 참조에서 해당 라이브러리 체크
매크로가 안 보임
버튼에 매크로 연결 시 목록에 안 나타남
원인
1) 모듈에 코드를 붙여넣지 않고 시트 코드 영역에 붙여넣음 2) Sub 이름이 Private로 시작 3) 파일이 .xlsx로 저장됨
해결
1) 삽입 → 모듈 (Module1)에 정확히 붙여넣기 2) Public Sub 또는 Sub로 시작하는지 확인 3) .xlsm으로 저장