2015-05-14 59 views
0

我目前正在使用Excel中的項目儀表板,我需要有兩層訪問權限: - 第1層:管理員。這是密碼保護用戶不應該觸摸的所有單元格。第2層:項目經理這是爲了讓具有該特定工作表的密碼的項目經理可以編輯某些範圍。Excel中的多個權限層

本質上我想鎖定工作表,但有一個額外的密碼來解鎖工作表上的幾個單元格。

這可能嗎?我在這裏和谷歌搜索周圍環顧四周,但沒有發現有用的東西。

謝謝你的時間! Joel

+0

我對VBA很糟糕,我只是一直在搞保護表,保護工作簿和允許用戶編輯範圍功能。我假設答案在於VBA;我只是不知道從哪裏開始。隨着向正確的方向推動,我相信我可以弄明白。 –

+0

這是正確的方法。我會做一些保護措施。您需要確保您希望Layer2能夠編輯鎖定或解鎖的單元格,然後保護工作表,以便只能單擊鎖定或解鎖。這樣,除了您指定的單元之外,其他所有單元格都將無法編輯 – Sam

回答

1

最簡單的入門方法(另一種採用非常乾淨的管理方式和管理方式)涉及保護整個工作表(並保護它),但有選擇性地解鎖允許的範圍。需要注意的是:所有的單元格必須完全鎖定在Workbook_Open上。這可以使用工作簿事件完成(如果您需要幫助,請詢問)。

在下面分享的代碼中,有幾個項目需要注意。 rngAdmin指的是管理員應該訪問的單元。同樣,rngProjectManager指的是PM應該訪問的單元。 sSheetPassword是實際工作表密碼,如在Protect Sheet Excel功能中所設置的。另外兩個密碼只在我們的模塊中。顯然,所有這些都應該改爲更安全的東西。

如果輸入管理員密碼,則管理員範圍將被解鎖。如果輸入了PM密碼,則PM範圍解鎖。如果輸入了不正確的密碼,則表格是隻讀的。思考?

Sub MultipleLayersofProtection() 
    Dim rngAdmin As Range 
    Dim rngProjectManager As Range 
    Dim sUserEnteredPW As String 

    Const sSheetPassword = "yupyupyup" 
    Const sAdminPW As String = "ABC123" 
    Const sProjectManagerPW As String = "LMNOP" 


    Set rngAdmin = Sheet1.Range("A1:C50") 
    Set rngProjectManager = Union(Sheet1.Range("A1:A5"), Sheet1.Range("C1:C5")) 

    sUserEnteredPW = Application.InputBox("Please enter the password:", , , , , , , 2) 

    Select Case sUserEnteredPW 
     Case sAdminPW 
      Sheet1.Unprotect Password:=sSheetPassword 
      rngAdmin.Locked = False 
      Sheet1.Protect Password:=sSheetPassword 
      MsgBox ("Admin Access") 
     Case sProjectManagerPW 
      Sheet1.Unprotect Password:=sSheetPassword 
      rngProjectManager.Locked = False 
      Sheet1.Protect Password:=sSheetPassword 
      MsgBox ("PM Access") 
     Case Else 
      MsgBox ("Read only access") 
    End Select 


End Sub