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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (169)

当工作簿中的工作表被锁定时,我使用下面的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
提问于
用户回答回答于

使用一种方法来检查最后一次用户操作实际上是隐藏/取消隐藏,而不是其他任何操作。但是现在应该允许用户隐藏/取消隐藏。

栏:

xWs.protect Password:= "1234",AllowFormattingColumns:= true

行:

xWs.protect Password:= "1234",AllowFormattingColumns:= true

我认为我们将创建一个单独的表,它将保存每个列的隐藏/非隐藏值。在我的例子中,这张纸是第8页。在那张纸的顶部,每一栏都放一个N.Sheet 10是我的表格,上面有数据。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim columnNum As Integer
        columnNum = Target.column

    Dim ws As Worksheet
       Set ws = Sheets("Sheet10")

    Dim prevHideValue As Boolean

    If Sheets("Sheet8").Cells(1, columnNum) = "N" Then
        hideValue = False
    Else
        hideValue = True
    End If

    Dim currentHideValue As Boolean

    If Sheets("Sheet10").Columns(columnNum).Hidden = False Then
        currentHideValue = False
    Else
        currentHideValue = True
    End If

    If currentHideValue <> prevHideValue Then
        If currentHideValue = False Then
            Sheets("Sheet8").Cells(1, columnNum) = "N"
        Else
            Sheets("Sheet8").Cells(1, columnNum) = "Y"
        End If
    Exit Sub
    Else
    MsgBox "STOP PLAYING WITH THE SHEET"
    ws.Protect Password:="1234"
    End If
End Sub

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励