首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >允许用户在工作表锁定时隐藏列

允许用户在工作表锁定时隐藏列
EN

Stack Overflow用户
提问于 2018-06-05 00:47:22
回答 2查看 803关注 0票数 2

当工作簿中的工作表被锁定时,我使用下面的VBA脚本为用户提供特定的权限。我想不出如何添加一行代码来允许用户隐藏和取消隐藏列。有什么建议吗?

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-05 01:02:47

我将尝试一种方法来检查最后一个用户操作实际上是隐藏/取消隐藏,而不是其他。但现在应该允许用户隐藏/取消隐藏。

对于列:

代码语言:javascript
复制
xWs.protect Password:= "1234",AllowFormattingColumns:= true

对于行:

代码语言:javascript
复制
xWs.protect Password:= "1234",AllowFormattingRows:= true

此脚本应有助于将用户活动限制为仅调整列宽。(lastAction将隐藏列描述为调整宽度,一定是隐藏列实际上只是一个最小化列宽度的功能,而不是一些特殊操作)

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2021-10-07 23:27:43

要做到这一点,您只需更改您允许用户在锁定工作表时操作的部分。我选择了除“选择锁定单元格”之外的所有内容,然后它就可以工作了。这意味着代码仍然隐藏在我不想编辑的单元格中,但基于我的VBA代码的隐藏展开按钮正在工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50685272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档