2013-05-06 3 views
1

대부분의 셀을 편집 할 필요가없는 Excel 스프레드 시트가 있습니다. 나는 그룹과 함께 일하기 때문에 보통의 방법으로 쉬트를 보호 할 수 없다 (특정 열을 확장하기 위해 맨 위에 작은 +).워크 시트 보호 통합 문서가 없습니다.

내 시트를 보호하기 위해 VBA 매크로를 찾았지만 전체 통합 문서가 여전히 보호되어 있어도 Excel 2010에서는 단순히 "시트 비보호"로 모든 것을 수정할 수 있음을 알았습니다.

이 내가 "에서 ThisWorkbook"에서 사용하는 매크로입니다 :

Private Sub Worksheet_Change(ByVal Target As Range) 
ActiveSheet.Unprotect Password:="nopassword" 
If Range("C3").Value = "protect" Then 
    Range("C4:C65536").Locked = True 
Else 
    Range("C4:C65536").Locked = False 
End If 
ActiveSheet.Protect Password:="fakepass" 
End Sub 

Private Sub Workbook_Open() 
Dim x As Long 

For x = 1 To ActiveWorkbook.Sheets.Count 
    With ActiveWorkbook.Sheets(x) 
     .Protect UserInterfaceOnly:=True 
     .EnableOutlining = True 
    End With 
Next 

End Sub 

가 어떻게이 코드를 수정할 수는 시트 1을 사용하려면?

저는 이것이 가장 안전한 형태는 아니라고 알고 있습니다 만 실수로 세포를 변경하는 것을 막는 것입니다.

답변

0

ActiveSheet.Unprotect Password:="nopassword" 현재 사용중인 시트 만 참조합니다.

Sheets("Sheet1").Activate 어떤 시트가 선택 되더라도 활성 시트를 sheet1에 설정합니다.

그게 너 였니?

1

변경할 경우

ActiveSheet.Protect Password:="fakepass" 

사람 :

Worksheets("Sheet1").Protect Password:="fakepass" 

은 현재 시트 만이 아니라 Sheet1에 적용됩니다.

또는 당신은 모든 시트를 보호하기 위해 매크로를 만들 수 있습니다, 같은 :

Sub ProtectAll() 

Dim ws As Worksheet 

For Each ws In ActiveWorkbook.Worksheets 
ws.Protect Password:="fakepass", DrawingObjects:=True, Contents:=True, Scenarios:=True 
Next ws 

End Sub 

그리고 메인 코드로 전화를?

관련 문제