保护工作表不是工作簿

我有一个Excel电子表格,需要大部分的单元格不受编辑。 我无法以通常的方式保护表格,因为我与团队合作(小数点+顶部展开某些列)。

我发现一个VBAmacros来保护我的工作表,但在Excel 2010中注意到,即使整个工作簿仍然受到保护,我仍可以简单地“解除工作表”并修改所有内容。

这是我在“ThisWorkbook”中使用的macros:

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 

如何修改此代码以使用Sheet 1?

我知道这不是最安全的保护forms,但仅仅是为了防止人们意外修改细胞。

如果你改变:

 ActiveSheet.Protect Password:="fakepass" 

至:

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

它将只应用于Sheet1而不是活动表格。

或者您可以创build一个macros来保护所有表单,如下所示:

 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 

然后把它调入你的主代码?

ActiveSheet.Unprotect Password:="nopassword"只会引用您所在的任何表单。

Sheets("Sheet1").Activate会将活动工作表设置为工作表1,而不pipeselect了哪个工作表。

那是你以后的事吗?