当工作簿中的工作表被锁定时,我使用下面的VBA脚本为用户提供特定的权限。我想不出如何添加一行代码来允许用户隐藏和取消隐藏列。有什么建议吗?
Sub EnableOutlining()
'Update 20140603
Dim xWs As Worksheet
Set xWs = Application.ActiveSheet
Dim xPws As String
xPws = Application.InputBox("Password:", xTitleId, "", Type:=2)
xWs.Protect Password:=xPws, Userinterfaceonly:=True
xWs.EnableOutlining = True
xWs.EnableOutlining = True
xWs.EnableAutoFilter = True
xWs.EnableFormatConditionsCalculation = True
End Sub
发布于 2018-06-05 01:02:47
我将尝试一种方法来检查最后一个用户操作实际上是隐藏/取消隐藏,而不是其他。但现在应该允许用户隐藏/取消隐藏。
对于列:
xWs.protect Password:= "1234",AllowFormattingColumns:= true
对于行:
xWs.protect Password:= "1234",AllowFormattingRows:= true
此脚本应有助于将用户活动限制为仅调整列宽。(lastAction将隐藏列描述为调整宽度,一定是隐藏列实际上只是一个最小化列宽度的功能,而不是一些特殊操作)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lastAction As String
lastAction = Application.CommandBars("Standard").Controls("&Undo").List(1)
If lastAction <> "Column Width" Then
Application.EnableEvents = False
Application.Undo
MsgBox "PLEASE ONLY HIDE OR UNHIDE COLUMNS"
Application.EnableEvents = True
End If
End Sub
发布于 2021-10-07 23:27:43
要做到这一点,您只需更改您允许用户在锁定工作表时操作的部分。我选择了除“选择锁定单元格”之外的所有内容,然后它就可以工作了。这意味着代码仍然隐藏在我不想编辑的单元格中,但基于我的VBA代码的隐藏展开按钮正在工作。
https://stackoverflow.com/questions/50685272
复制相似问题