用VBA制做EXCEL登录系统

上传人:夏** 文档编号:505817652 上传时间:2023-10-24 格式:DOC 页数:9 大小:640KB
返回 下载 相关 举报
用VBA制做EXCEL登录系统_第1页
第1页 / 共9页
用VBA制做EXCEL登录系统_第2页
第2页 / 共9页
用VBA制做EXCEL登录系统_第3页
第3页 / 共9页
用VBA制做EXCEL登录系统_第4页
第4页 / 共9页
用VBA制做EXCEL登录系统_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《用VBA制做EXCEL登录系统》由会员分享,可在线阅读,更多相关《用VBA制做EXCEL登录系统(9页珍藏版)》请在金锄头文库上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! 用VBA制做EXCEL登录系统 1 2 3 4 5 6 7 8 在工作中可能遇到这种情况,就是有一个录入工作需要多人协同完成,每个人所要录入的部份又不相同,于是就在同一个EXCEL工作簿中建立多个工作表,当某一个人录入时,只打开他需要操作的那个工作表,其他工作表自动隐藏起来,防止被误操作。我看到网上有不少朋友在找有这个功能的表格,于是就试着做了一个,跟大家分享一下。注意:由于EXCEL的VBA安全性非常低,网上有很多破解的方法,所以对那些数据安全性要求较高的请不要用这种方法。一、表格部份这个工作簿中有多个工作表,分成三类。第一类:工作簿的第一个工

2、作表,里面没有数据,只用于显示登录窗口,起名为“登录”。由于在VBA代码中要调用这个工作表,在实际使用时,这个名字不要改动。第二类:工作簿的第二个工作表,里面存储了各登录人员的姓名、登录密码以及各人要操作的工作表(权限),起名为“设置”,这个工作表的名字同样不要修改,里面的数据位置也不要改动。第三类:工作簿的第三及以后的工作表,这些表都是登录人员要操作的表格,应根据自己的需要设置,我为了介绍方便,给他们起名为“表一”、“表二”、.,可以添加多个,表的名字也可任意。在做上面这些表时,只要注意“登录”表的名字不要改、“设置”表的名字与数据位置不要改,其他部份可随意。提示:如果非要改变“登录”表与“

3、设置”表的名字,必须在EXCEL中改名后,把VBA代码中相关的名字也改过来才能正常使用。二、VBA部份上面表格部份完成后,就需要做VBA代码了,在EXCEL窗口按ALT+F11调出VBA窗口。1、登录窗体在工具栏中按“插入-用户窗体”,添加一个窗体。将插入的窗体调整到适当大小。2、代码在所添加的窗体上双击鼠标,然后把下面代码粘贴进去:Private Sub CommandButton1_Click()On Error GoTo 10 当姓名与密码不对应时,会出现错误,转到10语句处理Dim n As StringSet sh = Sheets(设置)na = TextBox1.Text: ps

4、 = TextBox2.Text 取得登录窗口中的姓名与密码If na = Or ps = Then MsgBox 未输入用户名或密码,不能登录, , 提示: Exit Subs = WorksheetFunction.Match(na, sh.a:a, 0) 查找用户在A列的位置n = sh.Cells(s, 2) 取出“设置”表中的权限密码,字符型If n ps Then GoTo 10Call 隐藏表检查一下“设置”表的C列及右边各格中的内容,有内容的,说明可以打开内容所指定的工作表For i = 4 To 255b = sh.Cells(s, i).ValueIf b = 1 And

5、sh.Cells(1, i) Then 单元格为1时,表示有权限打开这个表,就让它显示出来Sheets(sh.Cells(1, i).Value).Visible = -1End IfNextUnload UserForm1 退出窗体Exit Sub10:MsgBox 姓名或密码错误,不能登录, , 提示End SubSub 隐藏表()TextBox1.Text = : TextBox2.Text = For i = 1 To Worksheets.CountIf Sheets(i).Name 登录 ThenSheets(i).Visible = 2ElseSheets(i).Visible

6、= -1 只让“登录”表显示出来End IfNextEnd SubPrivate Sub CommandButton2_Click()Call 隐藏表End SubPrivate Sub UserForm_Activate()窗体出现在屏幕上的位置Me.Top = 220Me.Left = 120End Sub代码中都做了注释,看不明白也不影响使用,只要粘贴上就行了。再用鼠标双击左侧的thisworkbook模块,把下面代码粘贴上去。Private Sub Workbook_BeforeClose(Cancel As Boolean)Call UserForm1.隐藏表ActiveWorkbo

7、ok.Save 保存当前工作簿文档End SubPrivate Sub Workbook_Open()Call UserForm1.隐藏表UserForm1.Show 加载登录窗体End Sub再用鼠标双击左侧“设置”表模块,把下面代码粘贴上去。Private Sub Worksheet_Activate()将各工作表的名字填入第一行中For i = 2 To Worksheets.CountCells(1, i + 2) = Sheets(i).NameNextEnd Sub再用鼠标双击左侧“登录”表模块,把下面代码粘贴上去。Private Sub Worksheet_SelectionCh

8、ange(ByVal Target As Range)UserForm1.Show 加载登录窗体End Sub最后给VBA加上一个保护密码,防止其他人员改动代码。按“工具-VBA Project属性”,调出“VBA Project”属性窗口,选“保护”选项卡,按下图设置就行了。至此就完成了整个制做过程,关闭VBA窗口回到EXCEL窗口,就可以在这个工作簿中添加你要操作的全部工作表了,注意添加的位置在“设置”工作表的右边。使用时的注意事项:1、在“登录”工作表中,登录窗体是自动显示的,只要输入姓名、密码正确,按“登录”按钮,就会根据“设置”表中的权限,自动打开该操作者所要操作的工作表,与他无关的

9、表会自动隐藏。2、当以管理员身份(本例中的“张三”)登录后,只要一打开“设置”工作表,就能自动在D1单元格及右边的各单元格中更新工作表名字。3、任何操作者在操作完成后,要在“登录”窗体上点击“退出”按钮,以便关闭所操作的工作表。4、为了保证登录功能正常运行,在打开工作簿时一定要启用宏。另外,为了保证工作簿在关闭时只显示“登录”工作表,会自动将其他表隐藏并保存工作簿。补充说明:如果想在登录窗口的密码框不显示“明文”,只显示一串星号“*”,可以用下面方法设置。打开VBA窗口,用鼠标选中登录窗体的密码文本框textbox2,在左边“属性”窗口中找到passwordChar属性,输入一个星号就行了。补

10、充2有朋友提出,在显示登录窗口时,不想手工输入“姓名”,最好用下拉框选择“姓名”,想实现这个功能,只要把登录窗口中的姓名“文本框”删除,换成一个“复合框”,再改一下代码就可以了。1、改文本框为复合框2、修改代码分两步,先把原代码中的所有“TextBox1.Text”替换成“ComboBox1.Text”(提示:可以在VBA窗口中按“编辑-替换”,输入内容后选“全部替换”即可)。再将原代码中的下面这段:Private Sub UserForm_Activate()窗体出现在屏幕上的位置Me.Top = 220Me.Left = 120End Sub替换成:Private Sub UserForm_Activate()窗体出现在屏幕上的位置Me.Top = 220Me.Left = 120For i = 2 To Sheets(设置).a65536.End(xlUp).RowComboBox1.AddItem Sheets(设置).Cells(i, 1).ValueNextEnd Sub这样就可以使用了。 /

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号