每当数据输入到不同的列时,我都会使用 VBA 将信息添加到我的电子表格中。但是,要做到这一点,我需要在 VBA 脚本中解锁和锁定工作表。这需要用户重新输入密码才能编辑下一行。有没有解决方法?
答案1
我对这个问题进行了一些快速研究,发现 Thales 提到的一个选择是将密码作为参数传递到 VBA 中。
'Protect worksheet with a password
Sheets("Sheet1").Protect Password:="myPassword"
'Unprotect a worksheet with a password
Sheets("Sheet1").Unprotect Password:="myPassword"
这样做的缺点是,任何能打开你的代码的人都会看到你的密码。因此,如果你选择这种方式,你可能需要创建第二个密码来保护你的宏代码。请参阅下面的链接。
编辑:根据您上面的评论,它可能会帮助我们查看您的代码,然后我们可以找出处理密码的地方。
答案2
我可以向您建议两种可能的方法,允许某些用户编辑指定的数据范围。
方法 1(VBA 宏):
Private Sub Workbook_Open()
Dim winUser As String
winUser = Environ("username")
If winUser = "Admin" Then
Range("A1:I100").Select
ActiveSheet.Protection.AllowEditRanges.Add Title:="AdminRange", Range:=Range( _
"A1:I100"), Password:="123"
End If
If winUser = "User1" Then
Range("A200:I400").Select
ActiveSheet.Protection.AllowEditRanges.Add Title:="User1Range", Range:=Range( _
"A200:I400"), Password:="231"
End If
End Sub
方法 2:
- 打审阅选项卡然后点击允许用户编辑范围。
- 点击新的按钮然后新品对话框将会出现。
- 写范围名称,单元格引用(范围)&密码(密码可选)。
- 点击权限, 然后添加打开选择用户或组
- 如果找不到名称/组,请单击先进的按钮。
- 点击立即查找。
- 然后点击用户或组最后好的按钮。
- 添加用户/组名后,您可以定义是否需要密码来编辑范围。
- 最后完成好的。
笔记, 根据需要调整单元格引用并更改 VBA 代码中的用户名称。