不同用户依权限查看不同工作表的VBA实现.docx
- 文档编号:26927392
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:13
- 大小:496.60KB
不同用户依权限查看不同工作表的VBA实现.docx
《不同用户依权限查看不同工作表的VBA实现.docx》由会员分享,可在线阅读,更多相关《不同用户依权限查看不同工作表的VBA实现.docx(13页珍藏版)》请在冰豆网上搜索。
不同用户依权限查看不同工作表的VBA实现
不同用户依权限查看不同工作表的VBA实现
(登录窗口1)
(登录窗口2)
(登录窗口3)
(模块1代码窗口)
Thisworkbook代码窗口
代码如下:
PrivateSubWorkbook_Open()
Application.Visible=False
UserForm1.Show1
EndSub
PrivateSubWorkbook_BeforeClose(CancelAsBoolean)
OnErrorResumeNext
Application.DisplayAlerts=False
ForEachshtInWorksheets
Ifsht.Name<>Worksheets
(1).NameThen
sht.Visible=2
EndIf
Next
ThisWorkbook.SaveAsThisWorkbook.Path&"\"&ThisWorkbook.Name,,Password:
="123456",WriteresPassword:
="excel2010"
Me.Saved=True
Application.DisplayAlerts=True
EndSub
(登录窗口绘制)
(登录窗口属性设置)
(Userform1代码窗口)
(登录系统按钮属性设置)
(退出系统按钮属性设置)
其它控件属性设备略……
Userform1(登录窗口)代码:
PrivateSubUserForm_QueryClose(CancelAsInteger,CloseModeAsInteger)
Application.Quit
ThisWorkbook.CloseFalse
EndSub
PrivateSubCommandButton2_Click()'关闭系统
UserForm1.Hide
Application.Quit
ThisWorkbook.CloseFalse
EndSub
PrivateSubUserForm_Activate()
TextBox1.Text=""
IfComboBox1.ListCount>0ThenExitSub'复合框中的条目数大于0时不继续执行。
如无此句,会导致出现重复用户名下拉列表。
t=Array("管理员","受限用户A","受限用户B")
Fori=0To2
Controls("ComboBox1").AddItemt(i)
Nexti
EndSub
PrivateSubCommandButton1_Click()'登录按钮
IfComboBox1.Text="管理员"AndTextBox1.Text="admin"Then
Dimi%
ForEachshtInWorksheets
sht.Visible=True
Next
MsgBox"管理员登录成功"
'TextBox1.Text=""
Application.Visible=True
UserForm1.Hide
ElseIfComboBox1.Text="受限用户A"AndTextBox1.Text="123"Then
Worksheets
(2).Visible=True
Worksheets(3).Visible=2
Worksheets(4).Visible=2
MsgBox"登录成功"
Application.Visible=True
'TextBox1.Text=""
UserForm1.Hide
ElseIfComboBox1.Text="受限用户B"AndTextBox1.Text="456"Then
Worksheets(3).Visible=True
Worksheets(4).Visible=True
Worksheets
(2).Visible=2
MsgBox"登录成功"
Application.Visible=True
'TextBox1.Text=""
UserForm1.Hide
Else
MsgBox"输入错误!
"
TextBox1=""
EndIf
EndSub
PrivateSubTextBox1_KeyDown(ByValKeyCodeAsMSForms.ReturnInteger,ByValShiftAsInteger)'输入完毕回车
IfKeyCode=13Then
IfComboBox1.Text="管理员"AndTextBox1.Text="admin"Then
Dimi%
ForEachshtInWorksheets
sht.Visible=True
Next
MsgBox"管理员登录成功"
Application.Visible=True
UserForm1.Hide
ElseIfComboBox1.Text="受限用户A"AndTextBox1.Text="123"Then
Worksheets
(2).Visible=True
Worksheets(3).Visible=2
Worksheets(4).Visible=2
MsgBox"登录成功"
Application.Visible=True
UserForm1.Hide
ElseIfComboBox1.Text="受限用户B"AndTextBox1.Text="456"Then
Worksheets(3).Visible=True
Worksheets(4).Visible=True
Worksheets
(2).Visible=2
MsgBox"登录成功"
Application.Visible=True
UserForm1.Hide
Else
MsgBox"输入错误!
"
TextBox1=""
EndIf
EndIf
EndSub
相关参考代码(含注释):
PrivateSubCommandButton1_Click()'确定
DimshtAsWorksheet
Application.EnableEvents=False'禁用所有事件
cname=ComboBox1.Value'获得用户名
cno=WorksheetFunction.Match(cname,Sheets("设置").Range("a1:
a"&r),0)'用户所在行
Ifcname=Sheets("设置").Range("a"&cno).ValueAndPassword=Sheets("设置").Range("B"&cno).ValueThen'密码对
Unloadpass
Ifcno=2Then'是管理员
ForEachshtInWorksheets
sht.Visible=True'显示全部表单
Next
Else'是一般用户
sw=0
s=Sheets("设置").Range("C"&cno)
ForEachshtInWorksheets
Ifsht.Name=sThen
Sheets(s).Visible=True'显示
sw=1
Sheets("登录").Visible=False
EndIf
Next
Ifsw=0ThenMsgBox"没有你可以看的工作表,去找管理员更正"
EndIf
Else'密码不对
j=j-1
Ifj<>0Then
MsgBox"密码不对。
还可以输入"&j&"次。
"
TextBox1.Text=""
Else
Unloadpass
MsgBox"密码不对。
你已经试了3次了。
再见!
"
EndIf
EndIf
Application.EnableEvents=True'用所有事件
EndSub
PrivateSubTextBox1_Change()
Password=TextBox1.Text'获得密码
EndSub
PrivateSubUserForm_Initialize()
r=Sheets("设置").Range("A65536").End(xlUp).Row'用户最后行
Fori=2Tor'增加用户名
Me.ComboBox1.AddItemSheets("设置").Cells(i,1).Value
Nexti
Me.ComboBox1.SetFocus
ComboBox1.Value=Sheets("设置").Range("A2").Value'默认用户
EndSub
PrivateSubCommandButton3_Click()'退出
Unloadpass
EndSub
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 不同 用户 权限 查看 工作 VBA 实现