Excel VBA高效办公应用-第十七章-用户权限管理系统

没想到,Excel还能实现权限管理系统。VBA真是要逆天了。

Excel VBA高效办公应用-第十七章-用户权限管理系统_第1张图片

Excel VBA高效办公应用-第十七章-用户权限管理系统_第2张图片

Excel VBA高效办公应用-第十七章-用户权限管理系统_第3张图片

Excel VBA高效办公应用-第十七章-用户权限管理系统_第4张图片

Excel VBA高效办公应用-第十七章-用户权限管理系统_第5张图片

Option Explicit


Private Sub Workbook_Open()
'打开工作薄,不让用户看见工作表内容,所以将工作薄最小化
Application.WindowState = xlMinimized
'同时显示登录窗口
UserForm1.Show 0
End Sub



Option Explicit
'定义Spwd获得用户密码,Sname获得用户名
'Stext获得文本框密码,Sgrade获得用户级别
Public Spwd As String, Sname As String, Stext As String, Sgrade As String
Sub Change()
'调出更改权限窗口
UserForm3.Show
End Sub


Option Explicit

Private Sub ComboBox1_Change()
'得到用户员工号码
Lbname.Caption = ComboBox1.Text
'得到对应的员工号码用户级别
Lbgrade.Caption = Application.WorksheetFunction.VLookup(ComboBox1.Text, Range("C1:E100"), 2, False)
End Sub

Private Sub CommandButton1_Click()
Dim i As Integer
'如果没有选择用户则不做处理
If ComboBox1.Text = "" Then Exit Sub
'如果没有选择用户级别,则不做处理
If ComboBox2.Text = "" Then Exit Sub
'判断用户在管理用户权限表中的那一行
For i = 4 To Sheets("管理用户权限").[C2].CurrentRegion.Rows.Count
    '当单元格和员工号码相同时
    If Cells(i, 3) = ComboBox1.Text Then
        '修改相对应的用户级别
        Cells(i, 4) = ComboBox2.Text
        '修改完毕,隐藏更改权限窗口
        UserForm3.hide
    End If
Next i
End Sub

Private Sub CommandButton2_Click()
'不做修改,直接退出更改权限窗口
UserForm3.hide
End Sub

Private Sub Label1_Click()

End Sub

Private Sub UserForm_Activate()
Dim i As Integer
'激活管理用户权限表
Sheets("管理用户权限").Activate
For i = 4 To Sheets("管理用户权限").[B2].CurrentRegion.Rows.Count
    '给ComboBox1加载项目
    ComboBox1.AddItem Cells(i, 3)
Next i
'给Combobox2加载项目
ComboBox2.AddItem "一般用户"
ComboBox2.AddItem "高级用户"
ComboBox2.AddItem "管理员"
End Sub


Option Explicit

Private Sub CommandButton1_Click()
'定义Irows表示工作表总共数据行数
Dim Irows As Integer
'定义Sregname表示注册的名字,Sregpwd表示注册用户密码
Dim Sregname As String, Sregpwd As String
Sregname = TextBox1.Text '取得用户注册名
Sregpwd = TextBox2.Text '取得用户注册密码
'当公司没有对应的员工号码时会产生错误
On Error GoTo Doerror1
'激活销售部信息表
Sheets("销售部员工信息表").Activate
'查询在公司员工中有没有这个号码,没有则会出现错误Doerror1
Spwd = Application.WorksheetFunction.VLookup(Sregname, Range("A1:C100"), 3, False)
On Error GoTo Doerror2
    '激活管理用户权限表
    Sheets("管理用户权限").Activate
    '查询在管理用户权限中是否有这个号码了,没有会出现错误用Doerror2处理
    Spwd = Application.WorksheetFunction.VLookup(Sregname, Range("C1:E100"), 3, False)
    '如果没出错说明存在这个用户名了
    MsgBox "已经有这个用户名了,不能重复注册"
    Exit Sub
Doerror2: '出错则表示这个用户尚未注册
    '添加用户名和密码
    'Irows获得工作表总共数据行数
    Irows = Sheets("管理用户权限").[B2].CurrentRegion.Rows.Count
    '在数据最后一行添加新用户数据
    Cells(Irows + 1, 3) = Sregname '添加用户名
    Cells(Irows + 1, 4) = "一般用户" '添加用户级别
    Cells(Irows + 1, 5) = Sregpwd '添加用户密码
    MsgBox "注册成功" '提示注册成功
    Exit Sub
Doerror1: '没有员工发生错误时,进行提醒
    MsgBox "美天公司第一分公司没有这个员工,您的用户名有误"
End Sub
Private Sub UserForm_Terminate()
'不允许关闭注册窗口进入工作薄,关闭窗口则关闭工作薄
ActiveWorkbook.Close (False)
End Sub



Option Explicit

Private Sub ComboBox1_Change()
'得到用户员工号码
Lbname.Caption = ComboBox1.Text
'得到对应的员工号码用户级别
Lbgrade.Caption = Application.WorksheetFunction.VLookup(ComboBox1.Text, Range("C1:E100"), 2, False)
End Sub

Private Sub CommandButton1_Click()
Dim i As Integer
'如果没有选择用户则不做处理
If ComboBox1.Text = "" Then Exit Sub
'如果没有选择用户级别,则不做处理
If ComboBox2.Text = "" Then Exit Sub
'判断用户在管理用户权限表中的那一行
For i = 4 To Sheets("管理用户权限").[C2].CurrentRegion.Rows.Count
    '当单元格和员工号码相同时
    If Cells(i, 3) = ComboBox1.Text Then
        '修改相对应的用户级别
        Cells(i, 4) = ComboBox2.Text
        '修改完毕,隐藏更改权限窗口
        UserForm3.hide
    End If
Next i
End Sub

Private Sub CommandButton2_Click()
'不做修改,直接退出更改权限窗口
UserForm3.hide
End Sub

Private Sub Label1_Click()

End Sub

Private Sub UserForm_Activate()
Dim i As Integer
'激活管理用户权限表
Sheets("管理用户权限").Activate
For i = 4 To Sheets("管理用户权限").[B2].CurrentRegion.Rows.Count
    '给ComboBox1加载项目
    ComboBox1.AddItem Cells(i, 3)
Next i
'给Combobox2加载项目
ComboBox2.AddItem "一般用户"
ComboBox2.AddItem "高级用户"
ComboBox2.AddItem "管理员"
End Sub



你可能感兴趣的:(Excel VBA高效办公应用-第十七章-用户权限管理系统)