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

问题描述 投票:0回答:2

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

Range("A10:AM10").Select

Selection.AutoFilter
Selection.AutoFilter

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

vba excel filter autofilter
2个回答
2
投票

你好吗?

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

如果您是保护工作表的人,则可以使用工作表的任何 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

您的代码应该适用于这两个选项。

希望有帮助!


0
投票

发现UserInterfaceOnly 设置完成后仅在文件打开期间有效。关闭文件然后重新打开它并尝试通过 vba 设置自动筛选会导致错误 400。我的解决方案是在设置自动筛选之前取消保护并再次保护工作表。

© www.soinside.com 2019 - 2024. All rights reserved.