VBA:如何允许在受保护的工作表上打开和关闭过滤器?

VBA:如何允许在受保护的工作表上打开和关闭过滤器?,vba,excel,filter,autofilter,Vba,Excel,Filter,Autofilter,我有以下一段代码,它删除过滤器,然后从选定的单元格中重新应用它们: Range("A10:AM10").Select Selection.AutoFilter Selection.AutoFilter 我遇到的问题是,当工作表受到保护并且我尝试运行代码时,它会出错,那么有没有一种方法可以允许在受保护的工作表上打开和关闭过滤器?您好 这将取决于保护装置的设置。保护工作表时,有一个允许筛选的选项(自动筛选) 如果您是保护工作表的人,则可以使用工作表的protect方法的任何参数来设置保护选项。以

我有以下一段代码,它删除过滤器,然后从选定的单元格中重新应用它们:

Range("A10:AM10").Select

Selection.AutoFilter
Selection.AutoFilter
我遇到的问题是,当工作表受到保护并且我尝试运行代码时,它会出错,那么有没有一种方法可以允许在受保护的工作表上打开和关闭过滤器?

您好

这将取决于保护装置的设置。保护工作表时,有一个允许筛选的选项(自动筛选)

如果您是保护工作表的人,则可以使用工作表的protect方法的任何参数来设置保护选项。以下是保护方法的参数:

sheetName.Protect(Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly, AllowFormattingCells, AllowFormattingColumns, AllowFormattingRows, AllowInsertingColumns, AllowInsertingRows, AllowInsertingHyperlinks, AllowDeletingColumns, AllowDeletingRows, AllowSorting, AllowFiltering, AllowUsingPivotTables)
如果希望仅通过代码实现过滤器,则可以将UserInterfaceOnly参数设置为TRUE。该保护将仅阻止用户的更改。完全允许更改代码

sheetName.Protect UserInterfaceOnly:=True
或者,如果您想允许用户从界面过滤工作表的内容,只需将AllowFiltering参数和UserInterfaceOnly参数设置为TRUE即可

sheetName.Protect UserInterfaceOnly:=True, AllowFiltering:=True
您的代码应该同时使用这两个选项


希望有帮助

有没有一种方法可以在不通过代码保护工作表的情况下执行此操作?也就是说,只是通过Excel的“保护表”按钮来保护它?嗨@BenSmith。是的,有。在“保护表”对话框中有一个保护选项列表。其中之一是“使用自动筛选”(我使用的是Excel 2013。我不记得早期版本的Excel上的名称是否不同。但它就在那里!)。只要勾上那个复选框,你就可以开始了!