Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Excel共享工作簿中禁用排序_Excel_Vba - Fatal编程技术网

如何在Excel共享工作簿中禁用排序

如何在Excel共享工作簿中禁用排序,excel,vba,Excel,Vba,我只允许共享excel工作簿的所有者对文件中的数据进行排序。最好的方法是什么?如果主要原因不是强大的安全性,而是在与其他人共享的工作簿中发生的意外情况,那么这应该在工作表\u激活事件中起作用 这甚至不是试图隐藏排序禁止 Private Sub Worksheet_Activate() Dim WhoCanSort As String WhoCanSort = ThisWorkbook.WriteReservedBy If WhoCanSort = "Charlie" Then

我只允许共享excel工作簿的所有者对文件中的数据进行排序。最好的方法是什么?

如果主要原因不是强大的安全性,而是在与其他人共享的工作簿中发生的意外情况,那么这应该在工作表\u激活事件中起作用

这甚至不是试图隐藏排序禁止

Private Sub Worksheet_Activate()
 Dim WhoCanSort As String
  WhoCanSort = ThisWorkbook.WriteReservedBy
   If WhoCanSort = "Charlie" Then
     ActiveSheet.Unprotect
    Else:
     ActiveSheet.Protect AllowSorting:=False
   End If
 End Sub

还有一种方法不需要宏。如果使用“允许用户编辑范围”功能,可以为大多数用户锁定单元格并保护工作表,但可以定义可由特定用户编辑的单元格范围。请参阅本文:

这将是一件很难做到的事情,因为没有人能够绕过它。不能在共享工作簿上保护工作表或使用VBA代码。您可以暂时删除共享选项,方法是进入“审阅/共享工作簿”,然后取消选中“允许其他用户…”。。。选项,然后在添加保护后再次共享。然而,在进行了一个快速的实验之后,我无法让保护在不禁用其他功能的情况下阻止排序的方式下工作(但这可能是通过一些修改实现的)。还要记住,工作表保护密码很容易被黑客攻击:感谢您的回复。这是一个办公室文件,不需要太多的安全性,我是该文件的所有者。为了添加一些VBA代码,我暂时禁用共享没有问题。你能提供更多关于你做了什么和你使用了什么代码的细节吗?