No.1
用户登录权限在编程设计中是一个很重要的项目,实际意义在于实现分级管理。
也就是区分不同用户可以执行的某些操作。
根本上就是一个阶级的建立过程。
虽然,任何事任何时候都要讲究平等,但实际上,有些平等只是一个相对概念,并不能完全实现。
如果一律平等,将会造成混乱,没有规则,就失去了管理的能力。
No.2
用一个表格来保存用户名,以及其对表的操作权限记录。
具体效果可看下图:
以上图为初始化之后的表格记录,"√"表示可以操作,"×"表示不允许操作。
下面我们可以进行用户权限操作,单击设置用户权限按钮,弹出下图对话框。
工作表名称自动筛选出来,选择下拉框内用户名,设置多先按钮,单击修改权限确认。
设置权限后效果如下图:
No.3
当然,设置这个表,并不是我们想要达到的目的。
我们的目的是以此表为依据,对登录后的用户进行一个判断,然后确认是否可以进行下一步表格操作。
为了实现这个目的,我们做了一些代码来进行处理。
如下图所示:
当选择某一个工作表的时候,会自动弹出一个对话框,这里只做了用户名判断,也就是说,输入一个用户名,程序会自动判断此用户名是否可以对此表进行操作功能。
如果没有自动退出,如果有便打开表,进入操作。
在这个阶段,有很多处理表的方法,如对表进行隐藏,对表进行表保护,等等。
本例,只做了限制显示的功能。
下面看一些代码:
No.4
检测用户的合法性函数:
Function CheckAdmin() As Boolean "检测是否合法用户
Dim S As Worksheet, cell As Range, Xcell As Range, ir As Integer
Set S = ThisWorkbook.Worksheets("set")
ir = S.UsedRange.Rows.Count
Set cell = S.Range("A2:A" & ir)
Dim adminName As String
adminName = VBA.InputBox("输入管理用户名:", "用户合法性检测", "admin")
If VBA.Len(adminName) = 0 Then S.Activate: Exit Function
"查找是否是合法用户
Set Xcell = cell.Find(what:=adminName, LookIn:=xlValues, lookat:=xlWhole)
If Not Xcell Is Nothing Then
MsgBox Xcell.Value & vbCr & " 是合法用户,可以使用!", vbInformation, "提示"
CheckAdmin = True
Else
MsgBox adminName & vbCr & " 不是合法用户,不能使用!", vbInformation, "提示"
S.Activate
CheckAdmin = False
End If
End Function
CheckAdmin()函数返回一个布尔值,True为合法用户,False为非法用户。
所谓合法用户就是指已经注册的用户,非法就是没有进行注册登记的用户。
上面代码检测了用户是否存在,下面代码检测用户是否具有对表操作的权限,这个是整个权限管理的核心,仔细看下其判断逻辑。
检测表是否可以操作函数:
Function CheckAdminSheets(ActiveSheetName As String, S As Worksheet, xcell As Range) As Boolean "检测表是否可以操作
Dim Ccell As Range, Cr As Range, Ci As Integer
Ci = S.Cells(1, S.Cells.Columns.Count).End(xlToLeft).Column
Set Ccell = S.Range(S.Cells(1, 2), S.Cells(1, Ci))
Set Cr = Ccell.Find(what:=ActiveSheetName, LookIn:=xlValues, lookat:=xlWhole)
If Cr Is Nothing Then
CheckAdminSheets = False
ElseIf Not Cr Is Nothing Then
If S.Cells(xcell.Row, Cr.Column).Value = 0 Then
CheckAdminSheets = True
ElseIf S.Cells(xcell.Row, Cr.Column).Value = -1 Then
CheckAdminSheets = False
End If
End If
End Function
用户权限管理,基本思路就是这样,希望这样的功能对有需求的朋友,有所借鉴。
严格来说,这样的用户登录管理方式,并不严谨。
只作为一种实现思路来进行说明,实际应用中,可能会遇到更加复杂的问题。
不做深入研究了。
欢迎关注、收藏