使用受保护的工作表对表格进

时间:2016-11-21 15:02:15

标签: excel vba excel-vba

如何保护工作表,以便用户可以对表格进行排序?

我有:

  1. 锁定表格标题
  2. 解锁表中的单元格
  3. 选中了sortSelect unlocked cellsAutoFilter来保护工作表。
  4. 如果我点击标题旁边的按钮我可以过滤我的表格,但如果我想对其进行排序...我收到此错误消息:

      

    您尝试更改的单元格或图表受到保护,因此是只读的。

         

    要修改受保护的单元格或图表,请先使用“取消保护工作表”命令(“审阅”选项卡,“更改”组)删除保护。系统可能会提示您输入密码

    但是如果我解锁标题,用户可以对其进行排序和编辑。不幸的是,我不希望他改变标题,只是对下面的单元格进行排序。这可能吗?

    非常感谢您的答案!

    *编辑

    也许它只适用于 VBA (已添加标记VBA

1 个答案:

答案 0 :(得分:0)

我也在寻找一段时间的答案,不幸的是我不认为没有vba是可能的。此外,我不认为通过单击列标题中的过滤器/排序按钮会触发事件,因此您需要添加一个按钮,该按钮运行以下示例代码(需要根据您的需要进行调整) :

Sub sortColumn()
'Unprotect sheet (Change "password" or remove it if you don't have any)
ActiveSheet.Unprotect Password:="password"

'Use Sort function (you can use the macro recorder to find the right code for other sorting/filter-options)
'Adapt Sheetname and Range of table to your needs
Sheets(1).AutoFilter.Sort.SortFields.Clear
Sheets(1).AutoFilter.Sort.SortFields.Add Key:= _
    Range("A1:A10"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption _
    :=xlSortNormal
With ActiveWorkbook.Worksheets(1).AutoFilter.Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

ActiveSheet.Protect Password:="password"

End Sub

高级解决方案可以是创建一个用户表单,用户可以在其中选择要排序的列和排序顺序(降序/升序)。