Excel 如何在工作表上设置保护,但在重新启动后启用大纲显示和筛选?
我想向客户发送一份价目表,并需要保护工作表(仅两份)。但是,我希望允许分组/概述和筛选数据。由于工作表应该发给客户,所以我不想用任何事情打扰他 我尝试使用所需的条件设置密码,但每当我重新打开工作簿时,分组/大纲都会被锁定 我能想到的是尝试使用数据透视表Excel 如何在工作表上设置保护,但在重新启动后启用大纲显示和筛选?,excel,vba,Excel,Vba,我想向客户发送一份价目表,并需要保护工作表(仅两份)。但是,我希望允许分组/概述和筛选数据。由于工作表应该发给客户,所以我不想用任何事情打扰他 我尝试使用所需的条件设置密码,但每当我重新打开工作簿时,分组/大纲都会被锁定 我能想到的是尝试使用数据透视表 Option Explicit Sub protection() Dim ws1 As Worksheet Set ws1 = ThisWorkbook.Sheets("Sheet1") Dim ws2 As Worksheet Set ws
Option Explicit
Sub protection()
Dim ws1 As Worksheet
Set ws1 = ThisWorkbook.Sheets("Sheet1")
Dim ws2 As Worksheet
Set ws2 = ThisWorkbook.Sheets("Sheet2")
Dim strPassword As String: strPassword = "***"
With ws1
.Protect Password:=strPassword, UserInterfaceOnly:=True, AllowFiltering:=True
.EnableOutlining = True
End With
With ws2
.Protect Password:=strPassword, UserInterfaceOnly:=True, AllowFiltering:=True
.EnableOutlining = True
End With
End Sub
重新打开工作簿后,需要重置工作表保护,以便UserInterfaceOnly正常工作
Private Sub Workbook_Open()
protection
End Sub
Sub protection()
Const Password = "***"
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets(Array("Sheet1", "Sheet2"))
With ws
.Protect Password:=Password , UserInterfaceOnly:=True, AllowFiltering:=True
.EnableOutlining = True
End With
Next
End Sub
谢谢你的回复。我先使用我的代码,然后将您的代码放入此工作簿。这是唯一适合我的方法。我不明白为什么。正如我所说的,我需要将工作簿发送给客户,我担心他会提示允许此代码可能崩溃的宏。假设他打开工作簿,允许宏,但不能使用分组。然后他重新打开工作簿,没有提示,他可以使用分组。我说的对吗?我的代码有一个输入错误,删除了不必要的
Unprotect
。单击“启用内容”后,工作簿将打开。如果不启用内容,这将无法工作。