没想到,Excel还能实现权限管理系统。VBA真是要逆天了。
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