如何允许不同的用户(John
,Paul
和Mika
)编辑工作表中的不同单元格?
John
将仅编辑单元格A2
至C5
(范围1)Mika
将仅编辑单元格E2
至G5
(范围2)Paul
将仅编辑单元格H2
至K5
(范围3)在'allow users to edit ranges'
中,我没有密码为上述单元格创建了3个范围。每个范围都包含用户名权限。
当我选择range 1
时,则allow users to edit ranges
选项是disabled
。
我无法为其他2个用户申请相同的申请...
有人可以帮助并提供正确的步骤/ vba代码吗?
答案 0 :(得分:0)
在workbook_beforeclose事件中,我们锁定了所有单元格。在workbook.open事件中,我们获得用户的登录名并有选择地解锁该登录的所需范围。 如果用户未启用宏,则所有内容均受保护;如果用户启用,则仅所需范围可用。 (您必须一次关闭电子表格才能使保护生效)。这假定在公司环境中强制执行登录。此代码进入工作簿模块:
Option Explicit
Const pword = "your password here"
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws As Worksheet
For Each ws In Worksheets
ws.Unprotect pword
ws.UsedRange.Locked = True
ws.Protect pword
Next ws
End Sub
Private Sub Workbook_Open()
Dim LogonName As String
LogonName = Environ("UserName")
Dim rangetoedit As Range
Select Case LogonName
Case "John"
Set rangetoedit = Worksheets(1).Range("A2:C5")
Case "Paul"
Set rangetoedit = Worksheets(1).Range("H2:K5")
Case "Mika"
Set rangetoedit = Worksheets(1).Range("E2:G5")
End Select
Worksheets(1).Unprotect pword
rangetoedit.Locked = False
Worksheets(1).Protect pword
End Sub
您还将希望用密码保护您的vba代码