如何只允许特定用户取消隐藏工作表
how to allow only specific users to unhide a worksheet
我下面已经有一个宏,可以通过单击按钮取消隐藏作品sheet,并且工作正常。但是我希望更改此宏,以便只有两个用户(其用户名是 "JSMITH" 和 "DTAYLOR")能够取消隐藏这个名为 "Rates" 的 sheet。
如果其他人(其用户名不是上述两者之一)试图取消隐藏 sheet,我希望 Excel 显示消息 "you're not authorised to open this"。
此外,我需要确保只有这两个用户能够在没有 vba 的情况下以传统方式取消隐藏(例如,通过右键单击可见的作品sheet 选项卡和选择取消隐藏或从任何作品sheet 选项卡中选择格式,Sheet,然后选择取消隐藏)。
能否请您建议如何修改以下代码来执行上述所有操作?
我想到了这个,但它不起作用:
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
我下面已经有一个宏,可以通过单击按钮取消隐藏作品sheet,并且工作正常。但是我希望更改此宏,以便只有两个用户(其用户名是 "JSMITH" 和 "DTAYLOR")能够取消隐藏这个名为 "Rates" 的 sheet。
如果其他人(其用户名不是上述两者之一)试图取消隐藏 sheet,我希望 Excel 显示消息 "you're not authorised to open this"。
此外,我需要确保只有这两个用户能够在没有 vba 的情况下以传统方式取消隐藏(例如,通过右键单击可见的作品sheet 选项卡和选择取消隐藏或从任何作品sheet 选项卡中选择格式,Sheet,然后选择取消隐藏)。
能否请您建议如何修改以下代码来执行上述所有操作?
我想到了这个,但它不起作用:
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