簡體   English   中英

保護工作表而不是工作簿

[英]Protect worksheet not workbook

我有一個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一起使用?

我知道這不是最安全的保護方式,而只是為了防止人們意外修改電池。

如果您更改:

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

然后調用它到您的主代碼中?

ActiveSheet.Unprotect Password:="nopassword"將僅引用您正在使用的任何工作表。

Sheets("Sheet1").Activate會將活動工作表設置為sheet1,無論選擇了哪個工作表。

那是你的追求嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM