隐藏基于用户名

时间:2017-01-22 18:33:02

标签: excel vba excel-vba worksheet

我已经在下面有一个宏,只需点击一下按钮即可隐藏工作表,并且工作正常。但是我想要更改这个宏,以便只有两个用户(其用户名是“JSMITH”和“DTAYLOR”)能够取消隐藏这个名为“Rates”的表。

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

此外,我需要确保只有这两个用户能够在没有vba的情况下以传统方式取消隐藏(例如,通过右键单击可见工作表选项卡并选择取消隐藏或从任何工作表选项卡,选择格式,表格,然后取消隐藏)。

请告知您如何修改以下代码以执行上述所有操作?

Sub Hide_AllRatesSheet()

Worksheets("Rates").Visible = False 
ThisWorkbook.Sheets("Names").Activate 

End Sub

1 个答案:

答案 0 :(得分:0)

注意:您可以使用xlSheetVeryHidden属性来仅允许从代码中取消隐藏(而不是通过鼠标右键单击)。

尝试类似下面的代码:

Sub Hide_AllRatesSheet()

Select Case Environ$("username") '<-- check username
    Case "JSMITH", "DTAYLOR"  
        If ActiveSheet.Name <> "Rates" Then '<-- make sure "Rates" is not the ActiveSheet
            Worksheets("Rates").Visible = False
        Else
            ThisWorkbook.Sheets("Names").Activate
            Worksheets("Rates").Visible = False
        End If
    Case Else
        MsgBox "you're not authorised to open this"
End Select

End Sub