根据组合框值解锁范围



我有一个用户表单登录,用户必须输入名称和密码,并从组合框中选择他的角色。我的工作表受密码保护,我想允许在组合框中选择"x"角色的用户只允许输入C:D范围内的数据,允许输入"y"功能的用户只允许输入E:F范围内的数据。如果有人能帮我,我怎么能做到呢?

给你指引方向:

With Sheets("Target")
.Unprotect "Password"
.Cells.Locked = True
.[C:D].Locked = False
.Protect "Password"
End With

这是解决方案的一部分。角色可以写入单元格A1中。这个代码示例识别角色"经理"one_answers";和";Worker"。如果在单元格A1中写入了任何这些角色,它将解锁列C:D或E:F。否则所有单元格都被锁定

首先,您需要在工作表上使用Change事件。这是通过在VBA编辑器中单击项目树中的Sheet1来完成的。你在这里写的代码如下:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 And Target.Column = 1 Then
' If cell "A1" (row 1, column 1) is changed, then call the unlock function...
UnlockByRole
End If
End Sub

在VBA模块中输入以下代码:

' This function is used to unlock cells via a range string, e.g. "C:D"
Sub UnlockColumns(ColumnRange As String)
ActiveSheet.Unprotect Password:="mypassword"
Cells.Locked = True
Cells(1, 1).Locked = False ' Cell A1 is always editable in this example
If ColumnRange <> "" Then
Columns(ColumnRange).Locked = False
End If
ActiveSheet.Protect Password:="mypassword", DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Sub UnlockByRole()
If Cells(1, 1).Value = "Manager" Then
UnlockColumns "C:D"
ElseIf Cells(1, 1).Value = "Worker" Then
UnlockColumns "E:F"
Else
UnlockColumns ""
End If
End Sub

解释代码的第一部分添加了一个事件侦听器。当您更改工作表中的某些内容时,它将被调用/触发。

第二部分用于解锁/锁定工作表的特定部分。UnlockColumns函数可用于解锁工作表的任何范围。它还锁定工作表的其余部分(除了"A1")在这种情况下)。函数UnlockByRole仅用于检测您在单元格"a1"中输入的角色。(即"Manager"或"Worker". .所有其他字符串将被忽略并锁定整个工作表)

最新更新