엑셀 시트보호시에 메크로실행버튼 오류 안녕하세요 엑셀 고수님들에세 도움 요청합니다
안녕하세요 엑셀 고수님들에세 도움 요청합니다
엑셀에서 시트 보호를 설정하면, VBA 매크로에서 특정 작업을 할 때 런타임 오류 1004가 발생할 수 있습니다.
특히 도형을 버튼으로 만든 경우, 시트가 보호된 상태에서는 클릭 시 매크로 실행 권한이 제한됩니다.
문제 원인
시트 보호 설정 문제
시트 보호 시, 매크로가 도형을 수정하거나 접근하려 할 때 오류 발생
도형 클릭 권한 문제
매크로 실행을 위한 도형이 보호 설정으로 인해 클릭 자체가 제한됨
매크로 코드 문제
매크로 코드가 시트 보호 상태에서 동작하지 않도록 작성되어 있음
✅ 해결 방법
방법 1: 시트 보호 설정 시 '매크로 실행 허용'
1. 시트 보호 설정 변경
리본 메뉴 → 검토 → 시트 보호를 클릭합니다.
비밀번호 입력 후, 아래 옵션 중 '개체 편집' 또는 **'잠금 해제된 셀 선택'**을 체크합니다.
확인을 눌러 시트를 보호합니다.
이렇게 하면 도형 버튼을 클릭할 수 있습니다.
방법 2: VBA 코드로 시트 보호/해제 관리
매크로 실행 시 시트를 잠깐 보호 해제하고,
매크로 실행이 끝나면 다시 보호하도록 설정합니다.
예시 코드 수정
Sub 실행버튼1() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") ' 시트 이름 수정 ' 시트 보호 해제 On Error Resume Next ws.Unprotect Password:="1234" ' 시트 보호 비밀번호 입력 On Error GoTo 0 ' 매크로 실행 코드 MsgBox "매크로 실행 중입니다!" ' 시트 다시 보호 ws.Protect Password:="1234", UserInterfaceOnly:=True End Sub
코드 설명
시트 보호 해제
ws.Unprotect Password:="1234"로 시트 보호를 해제
매크로 코드 실행
매크로 동작 수행
시트 다시 보호
ws.Protect Password:="1234", UserInterfaceOnly:=True
UserInterfaceOnly:=True를 사용하여 매크로 동작 허용
오류 방지
보호 해제에 실패해도 오류가 나지 않도록 On Error Resume Next 사용
참고 사항
시트를 다시 보호할 때 **UserInterfaceOnly:=True**를 꼭 사용하세요.
이렇게 해야 매크로가 보호 상태에서도 작동합니다.
시트를 보호한 후, 엑셀을 닫았다가 다시 열면 이 설정이 초기화되므로
워크북 열기 이벤트에서 초기화하는 코드를 넣으면 더 편리합니다.
Workbook_Open 이벤트 사용 예시
Private Sub Workbook_Open() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") On Error Resume Next ws.Protect Password:="1234", UserInterfaceOnly:=True End Sub
이 코드를 ThisWorkbook 모듈에 넣으면, 엑셀을 열 때 자동으로 보호 설정이 적용됩니다.
마무리
이렇게 설정하면 시트 보호 상태에서도 매크로 버튼이 정상적으로 작동합니다!
혹시 추가로 어려운 점이 있으면 편하게 질문하세요.