Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Excel中的多权限层_Vba_Excel - Fatal编程技术网

Vba Excel中的多权限层

Vba Excel中的多权限层,vba,excel,Vba,Excel,我目前正在Excel中使用项目仪表板,我需要有两层访问权限: -第1层:管理。这是一个密码保护所有用户不应触摸的单元格。第2层:项目经理这是为了使具有特定工作表密码的项目经理可以编辑某些范围 基本上,我想锁定工作表,但有一个额外的密码来解锁工作表上的几个单元格 这可能吗?我在这里和谷歌搜索中四处寻找,但没有发现任何有用的东西 谢谢你的时间! Joel最简单的入门方法(一种非常简单的方法,管理员与PM方法)包括保护整个工作表(并保持其保护),但有选择地解锁允许范围。此处需要注意的是:所有工作表单元

我目前正在Excel中使用项目仪表板,我需要有两层访问权限: -第1层:管理。这是一个密码保护所有用户不应触摸的单元格。第2层:项目经理这是为了使具有特定工作表密码的项目经理可以编辑某些范围

基本上,我想锁定工作表,但有一个额外的密码来解锁工作表上的几个单元格

这可能吗?我在这里和谷歌搜索中四处寻找,但没有发现任何有用的东西

谢谢你的时间!
Joel

最简单的入门方法(一种非常简单的方法,管理员与PM方法)包括保护整个工作表(并保持其保护),但有选择地解锁允许范围。此处需要注意的是:所有工作表单元格必须完全锁定在
工作簿\u 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

我对VBA很糟糕,我只会搞乱保护表、保护工作簿和允许用户编辑范围功能。我假设答案在VBA中;我只是不知道从哪里开始。在正确的方向上轻推一下,我相信我能找到答案。这是正确的方法。我会做些保护自己的事。您需要确保要允许第2层编辑“锁定”或“解锁”的单元格,然后保护图纸,以便只能单击“锁定”或“解锁”。这样,除您指定的单元格外,所有其他单元格都将无法编辑