人。我是编程新手,但我正在编写一些宏来帮助管理我工作的共享Excel工作簿。
我正在为需要访问此工作簿的人实现一些不同的用户角色。安全性并不是非常关键,只是为了防止人们意外地(并保存)对他们不应该做的事情进行更改。我正在为密码提供UserForm提示,并根据输入的内容授予正确的访问权限。
我编写了这样的内容,以便用户在UserForm上进入文本框的条目直接引用为Me.textboxPasswordEntry.Value
进行任何比较。我觉得这可能不是最好的做法,但我无法理解为什么。也许我只是在思考?同时,声明变量,将值传递给变量,然后分析变量似乎是愚蠢和浪费。
以下Sub来自UserForm,我已将其包含在内,以向您展示我的意思。我知道,这是一个非常直接的场景,但如果我通过更复杂的方法继续这种做法,我是否会遇到麻烦?如果是这样,我可能遇到什么样的问题?
感谢。
Private Sub buttonOK_adminPW_Click()
'The subs SetUserType_[level] are in the ChangeUserType module
'AdminPass and DesignPass are module-level variables set on UserForm initialization
'Default user type is User. Read-only access.
'Admins can edit the workbook, but must save via a macro to ensure
' things are reset properly for Users (some sheets hidden, etc.)
'Designers can edit the workbook, but also have full ability to save using
' the regular file menu/ctrl+s/etc.
Application.ScreenUpdating = False
Select Case Me.textboxPasswordEntry.Value
Case AdminPass
'Shows right control buttons and unlocks the wkbk for admin access
SetUserType_admin
Unload Me
Case DesignPass
'Shows all control buttons and unlocks the wkbk for designer access
SetUserType_design
Unload Me
Case Else
MsgBox ("Password incorrect. Please retry.")
With Me.textboxPasswordEntry
.Value = ""
.SetFocus
End With
End Select
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:1)
是的,我多年来一直在思考用户形式的“最佳实践”...我想只是通过经验,我最常使用以下方法:
我很想看到其他人的建议!