2013-05-06 155 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會將活動工作表設置爲工作表1,而不管選擇了哪個工作表。

那是你以後的樣子嗎?

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 

然後它調入主代碼?

相關問題