我下面已经有一个宏,单击按钮即可取消隐藏工作表,并且可以正常工作。但是,我希望更改此宏,以便只有两个用户(其用户名分别为“ JSMITH”和“ DTAYLOR”)可以取消隐藏此名为“费率”的表格。
如果其他人(其用户名不是上述两个用户名之一)试图取消隐藏工作表,我希望Excel显示一条消息“您无权打开此文件”。
此外,我需要确保只有这两个用户才能以传统方式取消隐藏而不使用vba(例如,右键单击可见的工作表选项卡并选择取消隐藏,或者从任何工作表选项卡中选择“格式”,“工作表”和然后取消隐藏)。
您能否建议如何修改以下代码来完成上述所有操作?
我想出了这一点,但没有用:
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