내가 알 수있는 한 기본적으로 단일 시트를 삭제 불가능으로 태그 지정하는 것은 불가능합니다. 통합 문서가 예방 적으로 보호 될 수 있도록 시트를 삭제하려고 할 때를 감지하는 데 사용할 수있는 이벤트가 없습니다.
그러나, 여기에서 잠재적 인 해결 방법입니다 :
- 보호 통합 문서 구조 :이 의지, 당신은 표시로, 삭제되는 모든 시트를 방지 할 수 있습니다.
- "컨트롤"시트를 만듭니다. 이 시트에서 모든 시트 이름 목록을 유지하십시오 (삭제할 수없는 시트 이름은 제외).
- 시트를 삭제하려면 컨트롤 시트 (예 : 데이터 유효성 검사 드롭 다운 메뉴)에서 이름을 선택하고 '삭제'버튼을 눌러야합니다. 이 단추는 통합 문서를 일시적으로 보호 해제하고 선택한 시트를 삭제 한 다음 통합 문서를 다시 보호하는 매크로를 호출합니다.
물론 시트 탭에서 마우스 오른쪽 버튼 클릭> 삭제와 달리 사용자는 시트 삭제 방법에 익숙해 져야합니다. 아직도, 이것은 복잡하지 않습니다. 시트 이름의 목록을 유지 즉, # 2를 달성하는 방법에 관해서는
, 나는 당신이 (배열 수식으로 호출해야합니다)이 하나 같이 UDF의 사용을 만들 수있는 가정 :
Function DeletableSheetNames() As String()
Application.Volatile
Dim i As Long
Dim sn() As String
With ThisWorkbook
ReDim sn(1 To .Sheets.Count)
For i = 1 To .Sheets.Count
With .Sheets(i)
If .Name = "DataEntry1" Or .Name = "DataEntry2" Then
'Don't include it in the list.
Else
sn(i) = .Name
End If
End With
Next i
End With
DeletableSheetNames = sn
End Function
왜 숨기기를 사용하지 않습니까? 시트를 숨길 수 있다는 것을 알고 있습니까? 당신도 그들을 잠글 수 있습니다. – Leptonator
사용자가 해당 시트를 볼 수는 있지만 삭제할 필요는 없습니다. 그것들은 워크 시트 활성화 이벤트로 가득 찬 데이터 입력 시트입니다. 그 (것)들을 삭제하는 것은 진짜 고통 일 것입니다. – user3474688
UI가 처음 활성화되지 않은 시트를 여러 시트를 선택하여 삭제하는 유일한 방법은 여러 시트를 선택하는 것입니다. – aucuparia