繁体   English   中英

如何只允许特定用户取消隐藏工作表

[英]how to allow only specific users to unhide a worksheet

我下面已经有一个宏,单击按钮即可取消隐藏工作表,并且可以正常工作。 但是,我希望更改此宏,以便只有两个用户(其用户名分别为“ JSMITH”和“ DTAYLOR”)可以取消隐藏此名为“费率”的表格。

如果其他人(其用户名不是上述两个用户之一)试图取消隐藏工作表,我希望Excel显示一条消息“您无权打开此文件”。

此外,我需要确保只有这两个用户才能以传统方式取消隐藏而不使用vb​​a(例如,通过右键单击可见的工作表选项卡并选择取消隐藏,或从任何工作表选项卡中依次选择格式,工作表和然后取消隐藏)。

您能否建议如何修改以下代码来完成上述所有操作?

我想出了这一点,但没有用:

Sub GoToRates_WS() 

Select Case Environ$("username") 

Case "jsmith", "taylor" 

Worksheets("Rates").Visible = True 
ThisWorkbook.Sheets("Rates").Activate 
Case Else MsgBox "you're not authorised to open this" 
End Select 

End Sub

1-打开您的ThisWorkbook代码模块。

2-在此行的顶部粘贴:

Private RatesVisible As Variant

3-找到以下例程:

Private Sub Workbook_Open()
...
...
End Sub

End Sub行之前插入以下行:

RatesVisible = Worksheets("Rates").Visible

4-删除旧的例程GoToRates_WS

5-复制以下代码并将其粘贴在代码模块的末尾:

Private Function privilegedUser() As Boolean
    Select Case UCase(Environ$("username"))
        Case "JSMITH", "DTAYLOR"
            privilegedUser = True
        Case Else
        End Select
End Function

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    RatesVisible = Worksheets("Rates").Visible
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name <> "Rates" Then
        RatesVisible = Worksheets("Rates").Visible
        Exit Sub
    End If
    If privilegedUser Then
        RatesVisible = Worksheets("Rates").Visible
    Else
        Worksheets("Rates").Visible = RatesVisible
    End If
End Sub

Private Sub GoToRates_WS()
    If privilegedUser Then
        RatesVisible = xlSheetVisible
        Worksheets("Rates").Visible = xlSheetVisible
    Else
        MsgBox "You are not authorized to open this worksheet"
    End If
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM