Now…I have a workbook with 5 tabs. On tab 1 (the dashboard) I have four buttons – each one is basically a link to one of the other four. The reason it’s there with buttons is that only users with ‘admin’ permission to the workbook can go and change data on the other four tabs.
All other users should not be allowed to change any data on those other four tabs. It’s a “look but don’t touch” policy. Oh – to complicate it a little, we then decided they SHOULD be able to change one column on each worksheet.
So. It’s a shared workbook. My piece of code:
Private Sub cmdViewHistology_Click()
If UserPermsLevel = "High" Or UserPermsLevel = "Super" Then
Worksheets("Histology and Cytology").Visible = True
Worksheets("Histology and Cytology").Activate
Exit Sub
ElseIf (UserPermsLevel = "Normal" Or UserPermsLevel = "Normal and UserName") Then
Worksheets("Histology and Cytology").Visible = True
Worksheets("Histology and Cytology").Range("A:I").Locked = True
Worksheets("Histology and Cytology").Range("J:J").Locked = False
Worksheets("Histology and Cytology").Protect DrawingObjects:=False, Contents:=True, Scenarios:=False
Worksheets("Histology and Cytology").Activate
Else
MsgBox "Sorry, this command is not available."
End If
End Sub
It doesn’t work. Because it’s shared, I know I can’t protect the sheet – which is a shame. The problem is…I need those admin users to be able to change everything, and I need everyone else to be able to look but not touch!
So…does anyone have an alternative approach I could use for this? At the moment my workaround is to disable the four buttons and give them an out of order message which is not winning me any favours…
Really really hoping someone has a bright idea which will help me out of this hole!
Thanking you
If you know the Windows login for the admin users (or non-admin, whichever is easer) you can use
Environ("Username")to check against a list of approved users.On the change event of the worksheet, find out what cell is being changed, and if it’s not allowed, then check to see if that specific user has rights to do so.
Also, you will need to set this code on each of your ‘uneditable’ tabs, or put it in a separate module which is then called by the
Private Sub Worksheet_Change(ByVal Target As Range)on each of those tabs, not on the code for the buttons that switch the visible tab.