2013-05-06 150 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 

然后它调入主代码?

相关问题