当使用小过滤器下拉菜单对数据进行排序时,您无法撤消更改,这可能会扰乱数据的顺序。我的同事们都知道这一点,但有时有人意外地单击排序而不是筛选,我们需要用旧版本恢复工作簿。如何禁用所有人的选项?上面的三个选项就是我要说的。
我想加上这样的东西:
Application.CommandBars("Cell").Controls("Sort by color?").Visible = False
可能会工作,但我不知道究竟用什么来代替“细胞”,或什么名称的控件。我在哪里可以找到他们的名字?
92vpleto1#
保护工作表:1.从用户应该更改的所有单元格中删除单元格保护。(如果你愿意,这可以是整个表单)。1.保护工作表,允许自动筛选(以及所有其他选项,如果您愿意),但不允许排序。之后,用户可以过滤,但不能排序。
n8ghc7c12#
你可以使用这个宏来禁用排序,但允许过滤,像DisableSorting ActiveSheet一样调用它:
DisableSorting ActiveSheet
Option Explicit Public Sub DisableSorting(WS As Worksheet) WS.Cells.Locked = False ' a) WS.Protect _ DrawingObjects:=False, _ Contents:=True, _ Scenarios:=False, _ UserInterfaceOnly:=True, _ AllowFormattingCells:=True, _ AllowFormattingColumns:=True, _ AllowFormattingRows:=True, _ AllowInsertingColumns:=True, _ AllowInsertingRows:=True, _ AllowInsertingHyperlinks:=True, _ AllowDeletingColumns:=True, _ AllowDeletingRows:=True, _ AllowSorting:=False, _ AllowFiltering:=True, _ AllowUsingPivotTables:=True End Sub
但是,请注意,编辑单元格也是不可能的。无法禁用排序,但可以启用编辑。
更新1
正如P所指出的,如果您添加标有a)的行,则可以在禁用排序的同时允许过滤和编辑。
更新2
如果你想重新启用排序,你可以使用WS.Unprotect。如果更容易记住,你可以用这样的函数来实现:
WS.Unprotect
Public Sub EnableSorting(WS As Worksheet) WS.Unprotect End Sub
2条答案
按热度按时间92vpleto1#
保护工作表:
1.从用户应该更改的所有单元格中删除单元格保护。(如果你愿意,这可以是整个表单)。
1.保护工作表,允许自动筛选(以及所有其他选项,如果您愿意),但不允许排序。
之后,用户可以过滤,但不能排序。
n8ghc7c12#
你可以使用这个宏来禁用排序,但允许过滤,像
DisableSorting ActiveSheet
一样调用它:但是,请注意,编辑单元格也是不可能的。无法禁用排序,但可以启用编辑。
更新1
正如P所指出的,如果您添加标有a)的行,则可以在禁用排序的同时允许过滤和编辑。
更新2
如果你想重新启用排序,你可以使用
WS.Unprotect
。如果更容易记住,你可以用这样的函数来实现: